最近使用EF Core,使用的是DB First的模式。通過對資料表進行主外鍵的設定,實作實體類之間一對一、一對多、多對多的等關系模型。以下是Main、Main_Ext、Children三個表,
kid | name | value | note |
mid | num |
kid | pid | text | note | isDelete |
1、一對一關系設定:設定Main表的kid列為主鍵,設定Main_Ext表的mid列為主鍵,同時将它設定為外鍵,關聯Main表的kid列。如下圖所示:
則用EF Core生成的代碼如下所示,Main和Main_Ext之間存在一對一的關系。
public partial class Main
{
public Main()
{
Children = new HashSet<Children>();
}
public Guid Kid { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public string Note { get; set; }
public virtual MainExt MainExt { get; set; }
}
public partial class MainExt
{
public Guid Mid { get; set; }
public int? Num { get; set; }
public virtual Main M { get; set; }
}
2、一對多的關系設定:設定Main表的kid列為主鍵,設定Children表的kid列為主鍵,同時設定pid列為外鍵,關聯Main表的kid列。用EF Core生成的代碼如下所示,Main和Children之間存在一對多的關系。
public partial class Main
{
public Main()
{
Children = new HashSet<Children>();
}
public Guid Kid { get; set; }
public string Name { get; set; }
public string Value { get; set; }
public string Note { get; set; }
public virtual ICollection<Children> Children { get; set; }
}
public partial class Children
{
public Guid Kid { get; set; }
public Guid Pid { get; set; }
public string Text { get; set; }
public string Note { get; set; }
public bool IsDeleted { get; set; }
public virtual Main P { get; set; }
}
3、多對多的關系設定:設定Main表的kid為主鍵,同時為Main表增加cid的字段,并設定為外鍵,關聯Children表的kid列。設定Children表的kid列為主鍵,同時設定pid列為外鍵,關聯Main表的kid列。用EF Core生成,Main和Children之間存在多對多的關系。
最後:表和表之間存在關系之後,就不能輕易删資料了。是以可以給每個表增加IsDeleted字段,對資料進行軟删除即可。