当前位置: 首页 > 面试题库 >

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

严修德
2023-03-14
问题内容

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

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

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

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

将实体框架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进行大量的手工工作。



 类似资料:
  • 问题内容: 使用MVC时,返回即席Json很容易。 我正在使用新的Web API寻找此功能。 由于无法处理匿名类型,因此引发了异常。 我有这个替换此JsonNetFormatter基于 Json.Net 。如果我使用这行得通 但是如果我不返回,我看不到使用Web API的意义,那么最好还是坚持使用香草MVC。如果我尝试使用: 它序列化整个。 谁能指导我找到一种解决方案,在其中可以返回匿名类型? 问

  • 问题内容: 我正在将子系统从 NHibernate 移植到 Entity Framework, 并希望看到将以下查询移植到 EF 的最佳方法。 帐户余额类别为: 该表是: 示例数据是(使用数字ID可以更好地理解): 该 AccountBalanceByDate 实体持有某一天的账户余额。如果某天没有交易,则该天将没有 AccountBalanceByDate ,我们应该查看前几天以查看该帐户的余额

  • null 这似乎意味着我不像使用简单的“From customer”查询那样获取customer实体的实例。如果是这种情况,如何返回客户实体?如果没有,那我做错了什么?

  • 问题内容: 使用实体框架返回人名列表,其中人名包含字符串数组中的文本。 比方说: 和查询 这将编译并运行,但是该过程实际上是从数据库中调用所有记录,然后对返回的数据执行我的where子句。这是有道理的。 有没有一种方法可以重写查询,以便在SQL中生成where子句? 问题答案: 我假设dataContext.People是来自的,并且不涉及实现的指令,例如或。 答案在这里:http : //www

  • 问题内容: 我正在使用带有实体框架5的asp.net mvc3。我有.edmx文件,并能够使用linq或SP与数据库交互,但是我想运行一些原始sql语句。我正在尝试这样的事情: 是否有可能以这种方式执行sql查询?谢谢。 问题答案: 您可以执行以下类型的查询: 对实体类型的SQL查询,该查询返回特定类型的实体。 { } 非实体类型的SQL查询,该查询返回原始数据类型。 { var studentN

  • 问题内容: 我正在写一个跨三个表的JPQL查询。在我的结果列表中,我想获得每个匹配行的所有三个实体(希望如此)。 有任何想法吗? Hibernate 3.x是我的JPA提供程序。 问题答案: IIRC,您可以执行,结果将是,其中数组内容将包含o1,o2,o3值。