2013-03-15 45 views
-2

我正在使用打開的訪問權限orm,我需要一種簡單的方法來獲取父實體信息,並進行相關子級信息的自定義加載。我的意思是,當我要求訂單時,我只想要訂單信息,並且能夠加載或不加載訂單信息。自定義延遲加載打開訪問ORM

如果我有:

Public Class Order 
Public Property Number As Long 
Public Property Description As String 
Public Property OrderLines as List(of OrderLines) = new List(of OrderLines) 
End Class 

我能做些什麼,如果我想例如:

Dim e as new EntitiesModel() 
Dim q as Order = (from c in e.Orders 
       where c.Number = 5 
       select c).FirstOrDefault() 

而且我需要查詢只是爲了獲取訂單數據,而不是OrderLines,這似乎什麼OA默認做。

編輯:我已經嘗試過這樣的:

  Using dbcontext As New EntitiesModel() 
      Dim fetchStrategy As New FetchStrategy() 
      dbcontext.FetchStrategy = fetchStrategy 
      Dim q As Order 
      q = (From c In dbcontext.Orders 
       Where c.PK_Order = 79 
       Select c).FirstOrDefault 
      For Each olFound In q.OrderLines 
       Dim i As Integer 
       Console.WriteLN(olFound.Description&VbNewLine) 
      Next 
     End Using 

我還是收到OrderLines數據,我並不需要的Telerik的例子是數據always.Most即將加載相關的數據,但我想要相反。有沒有辦法指定我想不想做?我希望能夠清楚:/

+0

歡迎光臨!我們希望用戶在問這裏問題之前已經做了很多「嘗試和錯誤」。請告訴我們你做了什麼,以及爲什麼這不適合你。 – 2013-03-15 22:38:47

回答

0

您需要聲明「OrderLines」應該被延遲加載。您可以使用FetchPlans API或聲明關聯在配置中顯式延遲加載。

如果使用代碼只映射您可以定義加載行爲:

orderLineConfiguration.HasAssociation(x => x.Order).WithLoadBehavior(Telerik.OpenAccess.LoadBehavior.Lazy).WithOpposite(c => c.OrderLines); 

的OrderLines現在是懶加載。請參閱文檔herehere

+0

謝謝,我有一些問題,理解什麼是懶惰的加載和開放訪問的方式是...但與您提供的鏈接我知道了=) – user1824644 2013-03-19 21:31:54

+0

很高興我能幫上忙。由於在OpenAccess中有許多非常有用的API,因此我還建議進一步查看文檔以及示例包。 – cubski 2013-03-20 13:41:42