[英]Entity Framework entity how to set ID and foreign key constraint?
我有一些從數據庫優先的數據庫生成的實體框架 6 實體。 它們看起來類似於下面的代碼。
請注意,有一個CustomerID
和一個Customer
字段,其中Customer
字段來自FK_Contact_Customer
。
在 C# 中處理此實體的實例時,我應該設置CustomerID
還是Customer
? 一旦我設置了一個屬性,我如何使另一個保持一致? 這是一個手動過程嗎? 是否有實體框架助手?
例如,如果我有一個 Contact 實體的實例和一個Customer
實體的實例,那么將Contact.Customer
關聯到Customer
實例的正確方法是什么? 我希望在完成此操作后, CustomerID
和Customer
屬性都將與關聯一致。
注意:這可能是一個重復的問題,我進行了搜索,但找不到這個(基本)問題的答案。
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated from a template.
//
// Manual changes to this file may cause unexpected behavior in your application.
// Manual changes to this file will be overwritten if the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace MyProject.DAL.Context
{
using System;
using System.Collections.Generic;
public partial class Contact
{
public int ID { get; set; }
public int CustomerID { get; set; }
public string Contact1 { get; set; }
public string Email { get; set; }
public string ContactTitle { get; set; }
/// <summary>
/// FK_Contact_Customer
/// </summary>
public virtual Customer Customer { get; set; }
}
}
您應該注釋 Customer 屬性,使其看起來像這樣。
[ForeignKey("CustomerID")]
public virtual Customer Customer { get; set; }
如果您使用外鍵屬性,則不必手動設置 CustomerID 屬性。
或者您可以使用帶有遷移的 FluetAPI 將您的實體映射到數據庫
讓我們創建一個名為 ContactConfig 的類,該類將創建該實體的所有關系。
public class ContactConfig: EntityTypeConfiguration<Contact>
{
public ContactConfig()
{
HasKey(c => c.ID);
Property(c => c.Contact1 )
.IsRequired();
Property(c => c.Email )
.IsRequired();
Property(c => c.ContactTitle )
.IsRequired();
//Here is the secret
HasRequired(c => c.Costumer)
.WithMany(c => c.Contact)
.HasForeignKey(c => c.CustomerID);
}
}
CostumerID 只是一個導航屬性,將是 Costumer 類的外鍵。 您必須將 Costumer 類的 ID 與 Contact 類中的 CostumerID 屬性相關聯。
使用此設置,您只需在需要將客戶與聯系人關聯時調用 CostumerID 屬性
之后,只需在包管理器控制台中鍵入 Update-Database。
我假設您正在嘗試創建一個與現有客戶相關的新聯系人,在這種情況下,您將填充 Contact.CustomerID 並將 Contact.Customer 保留為空。 Contact.CustomerID 是 Customer 實體的外鍵。 Contact.Customer 是從 Contact 到 Customer 的導航屬性,您將在讀取數據時使用它,因此訪問 Contact.Customer 將為您提供相關的 Customer 實體。
我不確定創建填充了客戶的聯系人的含義,它可能會導致更新客戶實體,或者如果未填充客戶 ID,它可能會創建一個新的客戶記錄以創建並與聯系人相關。 這不是我會采用的方法,它可能需要配置。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.