簡體   English   中英

EntitySql的CreateQuery <T> 返回類型

[英]EntitySql CreateQuery<T> Return Type

我對使用CreateQuery<T>從模型返回實體很熟悉,但是如何從多個表返回結果? 我已經通過使用CreateQuery<dynamic>接近了,但是這似乎返回了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);

為此,您需要使用DbDataRecord,然后將其映射到某個對象(DTO或動態對象)。 這里有一個如何執行此操作的示例: http : //www.codeproject.com/Articles/152742/EF-DbDataRecord-ConvertTo

在ORM上進行這種訪問的問題是,它破壞了它提供的抽象。 然后,您將無法使用CreateQuery提供的Mapper,因為您使用的對象不在模型中。

您可以在此處看到Entity Framework + AutoMapper(實體到DTO和DTO到實體)有關如何使用映射器的一些示例。

我建議您使用Linq,因為它可以創建匿名類型。 對於該聯接,您無需手動創建SQL,它並不那么復雜。 實體框架左聯接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM