2011-08-18 14 views

回答

0

醬不支持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)另一種方法如下,並給出了更多的導航屬性風格的使用。修改你的對象定義爲包含一個列表,並使用[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(); 
    } 
} 

這應該做你追求的是什麼,如果你有任何問題,讓我知道。

+0

號碼2)就是我在此期間所做的:) – aknuds1

+0

啊,我發現我需要[IgnoredField]屬性,您在此處包含此屬性。 – aknuds1

0

我發現我可以使用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(); 
    } 
} 

請記住我沒能還測試此代碼。

相關問題