【问题标题】:EntitySql CreateQuery<T> Return TypeEntitySql CreateQuery<T> 返回类型
【发布时间】:2014-06-10 03:05:09
【问题描述】:

我非常熟悉使用CreateQuery&lt;T&gt; 从我的模型返回实体,但是如何从多个表返回结果?我已经通过使用CreateQuery&lt;dynamic&gt; 接近了,但这似乎返回了一个System.Data.Entity.Core.Objects.MaterializedDataRecord 对象,我无法使用它。

var sql = "SELECT TableA.ColumnA, TableB.ColumnB
 FROM TestingContext.TableA
LEFT OUTER JOIN TestingContext.TableB
ON TableA.TableBId = TableB.Id";

var results = ((IObjectContextAdapter)context).ObjectContext.CreateQuery<dynamic>(sql);

【问题讨论】:

    标签: c# .net entity-framework-6 entity-sql


    【解决方案1】:

    为此,您需要使用 DbDataRecord,然后将其映射到某个对象(DTO 或动态对象)。这里有一个如何做到这一点的例子:http://www.codeproject.com/Articles/152742/EF-DbDataRecord-ConvertTo

    这种对 ORM 的访问的问题在于它破坏了它提供的抽象。那么就不能使用 CreateQuery 提供的 Mapper,因为你使用的对象不在模型中。

    您可以在此处查看Entity Framework + AutoMapper ( Entity to DTO and DTO to Entity ) 一些有关如何使用 Mapper 的示例。

    我建议你使用 Linq,因为它可以创建匿名类型。而且对于那个连接,你不需要手动创建 SQL,它并不复杂。 Entity framework left join

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-04
      • 2010-09-27
      • 1970-01-01
      • 1970-01-01
      • 2020-01-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多