[英]How do I properly seed data with a circular dependency in Entity Framework Core?
首先,我使用 Entity Framework Core(在 .NET Core 3.1 中)和代碼優先的方法。
想象一下,我有幾個這樣的實體:
public class Employee
{
[Key]
[Required]
public int Id { get; set; }
[Required]
[ForeignKey(nameof(Department))]
public int DepartmentId { get; set; }
public virtual Department Department { get; set; }
}
public class Department
{
[Key]
[Required]
public int Id { get; set; }
[Required]
[ForeignKey(nameof(Manager))]
public int ManagerId { get; set; }
public virtual Employee Manager { get; set; }
}
每個Employee
都屬於一個Department
,每個Department
都有一個Employee
作為經理的語義。
我想為數據庫播種一些值,比如公司的“CEO”將屬於他應該擔任經理的“方向”部門; 但是,當我嘗試執行此操作時,我遇到了錯誤。
在使用ModelBuilder
實例為數據庫播種時,我可以做些什么來同時插入Employee
和Department
? 我知道有一種方法可以禁用外鍵約束,但由於這是代碼優先,我不知道該怎么做。
提前致謝。
這與您是否在播種中添加數據幾乎無關。 如果 SaveChanges 無法在 INSERT、UPDATE 和 DELETE 語句序列中應用請求的更改,它將引發異常。 在這里,如果您添加一個新的部門和經理,其中經理在部門中並且是其經理,則不能插入任何實體。
通常,您只需將部門設置為可選的經理即可。 畢竟,如果部門經理辭職會怎樣? 該部門可能有一段時間沒有經理是有道理的,即使在它成立之后也是如此。 所以添加新的部門,SaveChanges(),將新的Manger 添加到部門,SaveChanges()。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.