我有一个现有的应用程序,我正在尝试从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'"
有什么想法吗?
答案 0 :(得分:2)
我们最近在.FromSql()
上引入了DbSet
扩展方法。它还有一个额外的好处,你可以继续在它上面编写LINQ。
var customers = db.Customers
.FromSql("SELECT * FROM Customer")
.Where(c => c.Name.StartsWith("A"));