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。我如何在一次调用中加载一个帐户及其交易和转账交易列表?

4

1 回答 1

1

使用您的模型,您不能直接这样做,因为您在课堂上只有一个Transaction属性。Account此属性将指向同时存在的帐户,AccountId == IdTransferAccountId == Id从不指向两者。如果您想轻松加载这两种类型,您需要在您的帐户类型上使用两个导航属性 - 一个用于相关交易,一个用于转移交易,之后您只需将 Include 用于这两个属性:

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

如果您不想添加第二个导航属性,您可以反向执行。查询交易和急切加载帐户。作为最后一种情况,您可以分别查询帐户和交易。

于 2012-04-24T14:39:52.103 回答