C# EntitySql CreateQuery<;T>;返回类型
我非常熟悉使用C# EntitySql CreateQuery<;T>;返回类型,c#,.net,entity-framework-6,entity-sql,C#,.net,Entity Framework 6,Entity Sql,我非常熟悉使用CreateQuery从模型返回实体,但是如何从多个表返回结果呢?通过使用CreateQuery我已经接近成功,但这似乎返回了一个System.Data.Entity.Core.Objects.MaterialedDataRecord对象,我无法使用它 var sql = "SELECT TableA.ColumnA, TableB.ColumnB FROM TestingContext.TableA LEFT OUTER JOIN TestingContext.TableB O
CreateQuery
从模型返回实体,但是如何从多个表返回结果呢?通过使用CreateQuery
我已经接近成功,但这似乎返回了一个System.Data.Entity.Core.Objects.MaterialedDataRecord
对象,我无法使用它
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);
var sql=“选择TableA.ColumnA,TableB.ColumnB
来自TestingContext.TableA
左外部联接TestingContext.TableB
在TableA.TableBId=TableB.Id上”;
var results=((IObjectContextAdapter)context.ObjectContext.CreateQuery(sql);
为此,您需要使用DbDataRecord,然后将其映射到某个对象(DTO或动态对象)。这里有一个如何执行此操作的示例:
ORM上这种访问的问题在于它破坏了ORM提供的抽象。然后,您不能使用CreateQuery提供的映射器,因为您正在使用的对象不在模型中
您可以在这里看到一些关于如何使用映射器的示例
我建议您使用Linq,因为它可以创建匿名类型。对于这种连接,您不需要手动创建SQL,它并不复杂