实体框架中LINQ-to-SQL的ExecuteCommand相当于什么?

时间:2009-11-10 14:56:05

标签: c# linq-to-sql entity-framework

我正在将运行在LINQ-to-SQL上的应用程序移植到实体框架,并且无法找到 ExecuteCommand 的等效内容:

db.ExecuteCommand("INSERT Infos (Title) VALUES ('this is an added title')");

我发现this site告诉我可以在ObjectContext上实现ExecuteCommand作为扩展方法,通过将此代码添加到静态来保持现有代码不变项目中的方法:

public static int ExecuteCommand(this ObjectContext objectContext,
                                string command) {
    DbConnection connection = ((EntityConnection)objectContext.Connection).StoreConnection;
    bool opening = (connection.State == ConnectionState.Closed);
    if (opening)
        connection.Open();

    DbCommand cmd = connection.CreateCommand();
    cmd.CommandText = command;
    cmd.CommandType = CommandType.StoredProcedure;
    try {
        return cmd.ExecuteNonQuery();
    }
    finally {
        if (opening && connection.State == ConnectionState.Open)
            connection.Close();
    }
}

但我已经尝试将它(1)放在我使用它的类中,(2)在Entity生成的类文件中,(3)在项目的静态类中,但总是会得到各种错误。 我需要在哪里准确地使用此方法?

以上网站说:

  

ExecuteCommand被视为   对未来版本的增强   实体框架

最新版本的Entity Framework中是否存在ExecuteCommand()?我正在使用随Visual Studio 2008 SP1一起安装的实体框架。

1 个答案:

答案 0 :(得分:2)

.NET Framework 4的ObjectContext类具有ExecuteStoreCommandExecuteStoreQuery方法,这些方法似乎正是您所寻找的。