私は多くの運がなくてもコードファーストEF 4.1を使用して外部キー関係と他の制約を宣言する方法に関するリソースを探していました。基本的に私はコードでデータモデルを構築し、MVC3を使用してそのモデルをクエリしています。すべてが素晴らしいMVCを介して機能します(Microsoftに対してkudos!)。
たとえば、外部オブジェクト(テーブル)である大量のプロパティを持つOrderオブジェクトがあります。現在、問題なく注文を作成できますが、外部キーや外部オブジェクトを追加することはできません。MVC3はこれを問題なく設定します。
保存する前に自分でオブジェクトをコントローラークラスに追加するだけでよいことに気づきましたが、制約関係が満たされていない場合にDbContext.SaveChanges()の呼び出しを失敗させたいと思います。
新情報
したがって、具体的には、顧客オブジェクトを指定せずにOrderオブジェクトを保存しようとしたときに例外が発生するようにしたいと思います。ほとんどのCode First EFドキュメントで説明されているようにオブジェクトを作成しただけでは、これは動作ではないようです。
最新のコード:
public class Order
{
public int Id { get; set; }
[ForeignKey( "Parent" )]
public Patient Patient { get; set; }
[ForeignKey("CertificationPeriod")]
public CertificationPeriod CertificationPeriod { get; set; }
[ForeignKey("Agency")]
public Agency Agency { get; set; }
[ForeignKey("Diagnosis")]
public Diagnosis PrimaryDiagnosis { get; set; }
[ForeignKey("OrderApprovalStatus")]
public OrderApprovalStatus ApprovalStatus { get; set; }
[ForeignKey("User")]
public User User { get; set; }
[ForeignKey("User")]
public User Submitter { get; set; }
public DateTime ApprovalDate { get; set; }
public DateTime SubmittedDate { get; set; }
public Boolean IsDeprecated { get; set; }
}
これは、PatientのVSで生成されたビューにアクセスするときに発生するエラーです。
エラーメッセージ
タイプ 'PhysicianPortal.Models.Order'のプロパティ 'Patient'のForeignKeyAttributeは無効です。外部キー名「親」は、依存型「PhysicianPortal.Models.Order」で見つかりませんでした。Name値は、外部キープロパティ名のコンマ区切りのリストである必要があります。
よろしく、
グイド