3

我有一个现有的应用程序,我试图从MVC5/EF6升级到MVC6/EF7。我们动态地创建我们的一些SQL表,并因此,已利用该如何在实体框架7中运行自动映射到实体的动态SQL查询(SqlQuery <T>)?

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'" 

任何想法?

回答

2

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

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

感谢您的回复!这是7.0.0.0-beta3的一部分吗?还是比这更新?此外,SqlQuery方法可以指定Type作为其第一个参数。我不会有可用于此方法的DbSet。我目前使用反射动态地创建每个类型。 有没有一种方法可以使用上面提到的这种方法?再次,我真的很感激你的意见。谢谢! – Hayaku77 2015-04-02 16:53:59

+0

'FromSql'在测试版3中不可用。目前''FromSql'是我们可以运行普通SQL语句的唯一方法。 – Ricky 2015-04-21 02:23:44