Entity framework EF 7中的db.database.ExecuteSQLCommand等效命令
这相当于什么Entity framework EF 7中的db.database.ExecuteSQLCommand等效命令,entity-framework,asp.net-core,asp.net-core-mvc,entity-framework-core,Entity Framework,Asp.net Core,Asp.net Core Mvc,Entity Framework Core,这相当于什么 db.Database.ExecuteSqlCommand(Sql.ToString()); 在实体框架7中?我在beta 4中看到了.FromSQL(),但没有看到上面的任何内容。该功能尚未实现。使用问题跟踪其进度。这里是一个粗略的扩展方法,您现在可以使用 public static int ExecuteSqlCommand(this RelationalDatabase database, string sql) { var connection = databas
db.Database.ExecuteSqlCommand(Sql.ToString());
在实体框架7中?我在beta 4中看到了.FromSQL(),但没有看到上面的任何内容。该功能尚未实现。使用问题跟踪其进度。这里是一个粗略的扩展方法,您现在可以使用
public static int ExecuteSqlCommand(this RelationalDatabase database, string sql)
{
var connection = database.Connection;
var command = connection .DbConnection.CreateCommand();
command.CommandText = sql;
try
{
connection.Open();
return command.ExecuteNonQuery();
}
finally
{
connection.Close();
}
}
像这样使用它:
db.Database.AsRelational().ExecuteSqlCommand("EXEC MySproc");
注意,这并不考虑任何活动事务。只是想提供一个最新的方法,用于实体框架核心RC1 在Microsoft.Data.Entity命名空间中的DatabaseFacade类上有一个扩展,可按如下方式使用:
_dbContext.Database.ExecuteSqlCommand("EXEC MySproc");
我将在DbContext上创建一个扩展,它读取connectionstring并使用SqlCommand生成一个单独的SqlConnection。也许这就是我的“临时”解决方案:)你应该使用“使用”的方式,然后放弃try-catch。。。你不会知道这里出了什么问题。我接受了你的回答。你为什么要扩展RelationalDatabase?我扩展了DbContext,这样您就可以使用db.executeSql(“SQL查询”);(刚开始使用Asp.Net 5,所以,所以enlight me^^)更新了代码,我真的很讨厌try-catch,因为它隐藏了错误:)它不会隐藏错误——没有catch。它只是确保在出现错误时关闭连接。此外,DbCommand不打算被释放。Dispose方法是从组件派生的不幸结果。该方法已移动到RTMUpdate中的
Microsoft.EntityFrameworkCore
命名空间-当前,可以在Entity Framework Core中使用ExecuteSQLCommand
。但是,您需要使用Microsoft.EntityFrameworkCore添加代码>