簡體   English   中英

如何使用SauceDB將一對多關系轉換為列表屬性?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM