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回の呼び出しでアカウントとそのトランザクションのリストをロードし、トランザクションを転送するにはどうすればよいですか?

4

1 に答える 1

1

クラスTransactionには単一のプロパティしかないため、モデルでは直接行うことはできません。Accountこのプロパティは、アカウントを指定するAccountId == IdTransferAccountId == Id、両方を指定することはありません。両方のタイプを簡単にロードしたい場合は、Account タイプに 2 つのナビゲーション プロパティが必要です。1 つは関連トランザクション用、もう 1 つは転送トランザクション用です。その後、両方のプロパティに Include を使用します。

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

2 番目のナビゲーション プロパティを追加したくない場合は、逆方向に行うことができます。クエリ トランザクションとイーガー ロード アカウント。最後のケースとして、アカウントとトランザクションを別々にクエリできます。

于 2012-04-24T14:39:52.103 に答える