[英]How to override entity saving, in EFCore?
我想在我的模型中存儲一個對象列表,但我知道 EFCore 不支持。 為了解決這個問題,我在模型上創建了一個私有字符串屬性來保存列表中對象的 ID。 我的目的是在恢復時在類的構造函數中填充列表。 我的課如下:
public class Visitor
{
public int ID { get; set; }
private string _DepartmentIds { get; set; }
public List<Department> Departments { get; set; }
public Visitor()
{
if (_DepartmentIds.Length > 0)
{
Departments = JsonConvert.DeserializeObject<List<Department>>(_DepartmentIds);
}
else
{
Departments = new List<Department>();
}
}
}
我有兩個問題。 一是 _DepartmentIds 不會被 EFCore 保存/跟蹤。 我想是因為它是私人的。 第二個是我需要創建一個方法,該方法將從部門列表中讀取 ID,將它們放入 _DepartmentIds 字符串中,但我不知道如何在保存對象時調用此方法。 是否可以覆蓋或擴展保存在 EFCore 中的實體模型?
編輯:我正在使用反序列化,而不僅僅是將 ID 與分隔符連接,因為我可能想稍后擴展它。
對於 One:Many 關系,您應該創建一個單獨的表並加入它們。 架構應該是這樣的:
public class Visitor {
public int ID { get; set; }
public List<Department> Departments { get; set; }
}
public class Department {
public int ID { get; set; }
public int VisitorID { get; set; }
[ForeignKey(nameof(VisitorID))]
public Visitor Visitor { get; set; }
}
如果您不想在Department
擁有Visitor
對象,您還可以使用以下內容通過 fluent API 配置它:
entity.HasOne<Visitor>()
.WithMany()
.HasForeignKey(department => department.VisitorID);
當您在Visitor
上執行查找時,您將能夠使用Include
功能來包括所有相關部門。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.