【问题标题】:Entity Framework (Loading Nested Entities)实体框架(加载嵌套实体)
【发布时间】:2012-04-24 14:14:55
【问题描述】:

这些是我的实体...

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

【问题讨论】:

    标签: asp.net asp.net-mvc entity-framework entity-framework-4


    【解决方案1】:

    对于您的模型,您无法直接执行此操作,因为您在 Account 类上只有一个 Transaction 属性。此属性将指向具有AccountId == IdTransferAccountId == Id 的帐户,但绝不会同时指向两者。如果您想轻松加载这两种类型,您需要在您的帐户类型上使用两个导航属性 - 一个用于相关交易,一个用于转移交易,之后您只需将 Include 用于这两个属性:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-20
      • 1970-01-01
      • 1970-01-01
      • 2021-08-18
      • 2014-10-23
      • 1970-01-01
      • 2018-01-27
      • 1970-01-01
      相关资源
      最近更新 更多