我正在将在LINQ-to-SQL上运行的应用程序移植到Entity Framework,并且无法找到与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安装的实体框架。

最佳答案

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

关于c# - Entity Framework 中LINQ-to-SQL的ExecuteCommand等效于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1708564/

10-09 03:38