Die Anwendung, die ich versuche zu machen ist Hospital Management System. Im EnterPatientDiagnosis-Formular (der Screenshot ist am Ende angegeben) muss ich die Diagnoseinformationen des Patienten hinzufügen. Dann muss ich die zugehörigen Abrechnungsinformationen hinzufügen. Hier ist die Primärschlüsselspalte der beiden Tabellen eine Identitätsspalte. Dies ist ein häufiger Schritt in vielen Systemen. Aber ich konnte noch nicht herausfinden, wie es zu erreichen ist.Wie kann ich Abrechnungsinformationen nach der Bereitstellung von Patientendiagnose Informationen in einer Eins-zu-eins-Beziehung einfügen
Eine Lösung, an die ich gedacht habe, ist das Einfügen aller Diagnoseinformationen unter Beibehaltung des Attributs FK_billId Null mit Stored Procedure und das Abrufen der DiagnosisId als Ausgabeparameter der Stored Procedure. Wenn der Benutzer dann die Rechnungsinformation eingibt, werde ich BillId und DiagnosisId verwenden, um die zuvor eingefügte Zeile in der Diagnosetabelle zu aktualisieren. Aber ich mag diesen Ansatz aus zwei Gründen nicht:
Erstens, Weil es eine zusätzliche Update-Abfrage hat. Da, wenn ich die DiagnosisId als Fremdschlüssel zwischen diesen 2 Datenbanktabellen anstelle von BillId verwendet hätte, wäre diese Aktualisierungsabfrage nicht erforderlich. Aber ich habe nirgendwo irgendwelche Regeln/Prioritäten gefunden, auf welchen Schlüssel Sie als FK in der One-to-One-Beziehung zurückgreifen sollten.
Zweitens, Es Konflikte mit der Entity Class, die ich erstellt habe. Ich habe manuell 2 Klassen für diese 2 Tabellen in meinem Entity Layer erstellt. Also, wenn ich eine Zeile durch Entity-Layer einfügen möchte, müsste ich der Billing-Klasse eine neue Property namens DiagnosisId geben, die mit meinem Datenbank-Tabellenschema im Widerspruch steht. Hier sind die 2 Klassen in Layer-Entity:
public class EntityPatientDiagnosis
{
//Diagnosis Id is automatically assigned
public int DiagnosisId { get; set; }
public int PatientId { get; set; }
public string Symptoms { get; set; }
public string DiagnosisProvided { get; set;}
public string AdministeredBy { get; set; }
public DateTime DateofDiagnosis { get; set; }
public string FollowUpRequired { get; set; }
public DateTime DateOfFollowUp { get; set; }
public int BillId { get; set; } //BillId -> Foreign Key
}
public class EntityBilling
{
//BillId -> Primary Key ->set automatically
public int BillId { get; set; }
public int BillAmount { get; set; }
public string CardNumber { get; set; }
public string ModeOfPayment { get; set; }
}
Hier ist das Bild der ERD der Tabellen und Web Forms:
Nicht sicher, ob ich vollständig verstehe. Sie können die Informationen jedoch in Ihrem Klassenobjekt aufbewahren, bis die Zahlungsinformationen hinzugefügt wurden. Sobald Sie beide haben, fügen Sie zuerst in die Fakturierungstabelle ein, wodurch Sie BillId als FK für die Diagnosetabelle verwenden können. –