私がしようとしているアプリケーションは病院管理システムです。 EnterPatientDiagnosisフォーム(最後にスクリーンショットがあります)では、患者の診断情報を追加してから関連する請求情報を追加する必要があります。ここでは、テーブルの主キー列の両方がID列です。 これは多くのシステムの共通のステップですが、達成方法の詳細はまだ見つかりませんでした。患者診断情報を1対1の関係で提供した後に課金情報を挿入する方法
私が考えた解決策の1つは、ストアドプロシージャを使用してFK_billId属性Nullを保持しているすべての診断情報を挿入し、ストアドプロシージャの出力パラメータとしてDiagnoseIdを取得することでした。その後、ユーザーが請求情報を提出すると、BillIdとDiagnosisIdを使用して、診断テーブルの以前に挿入された行を更新します。しかし、私はこのアプローチが2つの理由で好きではありません。
最初に,追加の更新クエリがあるためです。以来、私は、この2つのデータベーステーブルの間で外来キーとしてDiagnIdIdをBillIdではなく使用した場合、この更新クエリの必要はありません。しかし、私はどこにキーをあなたが1対1の関係でFKとして使用するべきであるかのルール/優先順位を与えるどこにも見つかりませんでした。
第2に,これは、作成したエンティティクラスと競合します。私はEntity Layerのこの2つのテーブルに対して2つのクラスを手動で作成しました。ですから、エンティティ・レイヤーを通して行を挿入したいのであれば、Billingクラスに私のデータベース・テーブル・スキーマと矛盾するDiagnosisIdという名前の新しいプロパティを与える必要があります。ここ は、エンティティ、レイヤ2つのクラスである:ここで
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; }
}
テーブルやWebフォームのERDの写真です:
私が完全に理解しているかわかりません。しかし、課金情報が追加されるまで、クラスオブジェクトの情報を保持することができます。両方が済むと、最初にBillingテーブルに挿入します。これによりBillIdがFKとして診断テーブルに使用されます。 –