小编典典

在实体框架中使用SqlQuery RAW查询返回匿名类型

sql

如何使Entity Framework SqlQuery返回匿名类型。

现在,我运行context.TheObject.SqlQuery()RAW查询。该查询联接了两个表,我想返回联接表的结果。

如果我将其与某种类型一起使用,则context.TheObject.SqlQuery()只会看到相同类型的表的结果。

我试过了db.Database.SqlQuery<DbResults>("the sql query here");
使用与结果的对象匹配的预定义类,但所有字段均为null。

将实体框架6与MySQL结合使用。


阅读 221

收藏
2021-05-05

共1个答案

小编典典

我在这里忙个不停,将尝试解决您的根本问题,而不是直接回答您的问题。

带有预定义类的方案 应该可以正常工作 。一个可能的陷阱是列名和类的属性不匹配。

示例代码(LinqPad)

    var results = Database.SqlQuery<TestResult>("select r.Name, b.BankName from relation r inner join BankAccount b on b.RelationId = r.Id where r.Id = 2");
    results.Dump();
}

public class TestResult {
    public string Name { get; set; }
    public string BankName { get; set; }

我强烈建议您使用显式类型重新访问有问题的代码。


直接回答您的问题:不,您不能从SqlQuery返回匿名类型。您可以做的最好的事情就是构建 动态对象
,但是不幸的是,这需要使用TypeBuilder进行大量的手工工作。

2021-05-05