[英]How do I set up a one-to-many relationship using Entity Framework Core?
[英]How do I turn a one-to-many relationship into a list property using SauceDB?
使用SauceDB,如何將表A和表B之間的一對多關系轉換為對應於表A的類中的列表屬性(包含B對象)? 該關系由表B中引用表A的外鍵表示(因此,許多B記錄可以屬於一個A記錄)。
我發現我可以使用AdditionalInit屬性來定義一個掛鈎,該掛鈎在初始化數據庫對象時被調用。 由於此掛鈎可以接受數據存儲,因此我可以推斷出一對多關系。
以下是A類的相關摘錄:
public class A
{
...
public List<B> Bs { get; private set; }
[AdditionalInit]
public void OnInit(IDataStore dstore)
{
Bs = dstore.Query<B>().Where(b => b.A.Id == Id).ToList();
}
}
請記住,我還無法測試此代碼。
醬不支持Linq2SQL樣式導航屬性。 但是,有兩種受支持的方法來解決此問題,具體取決於您的要求。
1)只需在代碼中加入
IDataStore dstore = .GetDataStore();
var query = from i in dstore.Query<MyTable>()
join x in dstore.Query<MyTable>() on i.Name equals x.Name
select new { };
2)另一種方法如下,並提供了更多的Navigation Property Style使用。 修改對象定義以包含列表並使用[AdditionalInit]
public class Foo
{
public int ID { get; set; }
public string Name { get; set; }
[IgnoredField]
public List<Bar> Bars { get; set; }
[AdditionalInit]
private void LoadBars(IDataStore dstore)
{
Bars = dstore.Query<Bar>().Where(r=> r.Foo = this.ID).ToList();
}
}
如果您還有其他問題,請告訴我,這應該可以滿足您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.