2012-04-24 100 views
1

這是我的實體...實體框架(裝入嵌套實體)

Public Class Account 
    Public Property AccountId As Integer 
    Public Property AccountDescription As String 
    Public Property Transactions As List(Of Transaction) 
End Class 

Public Class Transaction 
    Public Property TransactionId As Integer 
    Public Property AccountId As Integer 
    Public Property TransferAccountId As Integer 
    Public Property TransactionDescription As String 
End Class 

現在我知道我可以做到這一點。 db.Account.Include(「Transactions」)。SingleOrDefault(Function(a)a.AccountId = myAccountId)

但是,這隻包括明顯具有AccountId = myAccountId的事務。但在我的情況下,我希望所有交易,包括那些涉及轉移的交易。所以AccountId = AccountId或TransferAccountId = myAccountId。我如何在一次通話中加載賬戶及其交易和轉賬交易清單?

回答

1

隨着你的模型,你不能直接做到這一點,因爲你只有Account類的單一Transaction屬性。此屬性將指向賬號AccountId == IdTransferAccountId == Id,但從未指向兩者。如果你想輕鬆地將您需要在您的帳戶類型兩個導航性能的兩種類型 - 一個用於關聯交易,一個用於轉賬交易,在那之後,你只需要使用包括兩個屬性:

db.Account.Include("Transactions") 
      .Inclue("TransferTransactions") 
      .SingleOrDefault(Function(a) a.AccountId = myAccountId) 

如果你不」你想添加第二個導航屬性,你可以在相反的方向做到這一點。查詢交易和急切的加載賬戶。作爲最後一種情況,您可以分別查詢帳戶和交易。