我一直在尋找關於如何使用代碼優先EF 4.1來聲明外鍵關係和其他約束的資源,但沒有多少運氣。基本上我在代碼中構建數據模型並使用MVC3來查詢該模型。一切工作通過MVC這是偉大的(微軟的榮譽!),但現在我希望它不工作,因爲我需要有數據模型約束。如何聲明外鍵關係在MVC3中使用代碼優先實體框架(4.1)?
例如,我有一個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; }
}
這是錯誤我現在得到當訪問VS生成視圖病人:
錯誤信息
的ForeignKeyAttribute物業 「 'PhysicianPortal.Models.Order'不是 有效。在依賴類型 'PhysicianPortal.Models.Order'上找不到外鍵名'Parent' 。 名稱值應該以逗號分隔 外鍵屬性名稱的列表。
問候,
圭多
謝謝Sergi - 我在塊引用中添加了一些額外的信息。 – 2011-04-04 21:40:28
@Guido - 我已根據您的最新代碼編輯更新了我的答案,希望這有助於您。 – 2011-04-05 07:13:06
幹得好! – Shimmy 2012-12-04 01:37:30