Microsoft Entity Framework中使用的原始SQL查询是否返回对象?

时间:2017-01-05 16:36:27

标签: c# entity-framework

我个人喜欢SQL,但我意识到我可能需要遵循EF设计。有时和其他团队成员一起使用SQL 。在进行原始SQL查询时,它是否返回C#代码的对象/属性?如果我有五个表映射,并且我执行原始查询,是否返回相应的属性?

2 个答案:

答案 0 :(得分:5)

答案是肯定的。您需要为原始SQL查询的结果定义实体类,请记住使属性的名称与查询中返回列的名称完全相同。

context.Database.SqlQuery<YourEntity>("your query").ToList();

答案 1 :(得分:1)

使用EF,您必须为原始查询创建和维护POCO,并且您的查询文本可能会在某个地方的双引号中萎缩。为什么不抓住QueryFirst?您的sql将在.sql文件中,并将为您生成和管理包装代码,包括POCO。还有许多其他优点

您不必专门使用一种方法。很多人在他们需要/想要“恢复”到SQL时使用EF,然后是Dapper或类似的东西。 QueryFirst不是ORM,也不替换EF。显然,如果让EF管理您的架构(首先是代码,首先是模型),那么非EF查询可能会受到EF架构更改的影响。但至少使用QueryFirst,您可以“重新编译”您的查询以确保它们正常工作,并在EF更改您的架构后仍然返回您需要的内容。

免责声明:我写过QueryFirst。