EF 7中的db.database.ExecuteSQLCommand等效項

asp.net-core asp.net-core-mvc entity-framework entity-framework-core

什麼相當於

db.Database.ExecuteSqlCommand(Sql.ToString());

在實體框架7?我在測試版4中看到了.FromSQL(),但是沒有看到上面的任何內容。

一般承認的答案

該功能尚未實現。使用問題#624跟踪其進度。這是您現在可以使用的粗略擴展方法。

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();
    }
}

像這樣用它:

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();
    }
}

請注意,這不會考慮任何活動事務。


熱門答案

只是想為Entity Framework Core RC1提供最新的使用方式的更新。

Microsoft.Data.Entity命名空間中的DatabaseFacade類有一個擴展,您可以按如下方式使用:

_dbContext.Database.ExecuteSqlCommand("EXEC MySproc");



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因