Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EntitySql CreateQuery<;T>;返回类型_C#_.net_Entity Framework 6_Entity Sql - Fatal编程技术网

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,它并不复杂