如何在实体框架7中运行自动映射到实体的动态SQL查询(SqlQuery <t>)?</t>

时间:2015-04-02 12:33:59

标签: entity-framework asp.net-core-mvc entity-framework-core

我有一个现有的应用程序,我正在尝试从MVC5 / EF6升级到MVC6 / EF7。我们动态创建了一些SQL表,因此使用了

System.Data.Entity.Database.SqlQuery

自动映射到我们在整个应用程序中使用的实体的方法。

这种方法似乎消失了(即不属于      EF7中的Microsoft.Data.Entity.Infrastructure.Database)(或尚未实现)。是否有计划在EF7中重新实施此方法,还是有其他方法可以实现此目的?在我们解决这个问题之前,我们的项目在水中已经死了。

于2015年5月20日编辑

我一直在努力使这个工作与FromSql,因为这是Beta4中可用的,但无论我尝试的串联字符串,参数的组合,我不断得到“@xxxvariable附近的不正确的语法”消息的不同版本。

var results = Set<AssessmentResult>().FromSql("dbo.GetAssessmentResults @FieldA='Data1', @FieldB='Data2', @UserId = 2303"); 
var results2 = Set<AssessmentResult>().FromSql("dbo.GetAssessmentResults @FieldA= {0}", intData); 

这两个调用都会导致

"Incorrect syntax near '@FieldA'" 

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

我们最近在.FromSql()上引入了DbSet扩展方法。它还有一个额外的好处,你可以继续在它上面编写LINQ。

var customers = db.Customers
    .FromSql("SELECT * FROM Customer")
    .Where(c => c.Name.StartsWith("A"));