加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 使用实体框架中的SqlQuery RAW查询返回匿名类型

发布时间:2020-12-15 23:45:56 所属栏目:百科 来源:网络整理
导读:如何使Entity Framework SqlQuery返回匿名类型. 现在我运行一个context.SObject.SqlQuery()RAW查询.查询连接两个表,我想返回连接表的结果. 如果我使用类型context.SObject.SqlQuery()我只能看到相同类型的表的结果. 我尝试了db.Database.SqlQuery DbResults(
如何使Entity Framework SqlQuery返回匿名类型.

现在我运行一个context.SObject.SqlQuery()RAW查询.查询连接两个表,我想返回连接表的结果.

如果我使用类型context.SObject.SqlQuery()我只能看到相同类型的表的结果.

我尝试了db.Database.SqlQuery< DbResults>(“这里的sql查询”);使用与结果对象匹配的预定义类,但所有字段均为null.

使用Entity Framework 6和MySQL.

解决方法

我在这里走出困境,并试图解决你的根本问题,而不是直接回答你的问题.

您使用预定义类的方案应该有效.一个可能的缺陷是列名和类的属性不匹配.

示例代码(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需要相当多的手动工作.有关样本,请参见http://www.codeproject.com/Articles/206416/Use-dynamic-type-in-Entity-Framework-SqlQuery.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读