我移植的LINQ到SQL來實體框架運行的應用程序,並且我無法找到一個相當於ExecuteCommand:實體框架中的LINQ-to-SQL的ExecuteCommand等價於什麼?
db.ExecuteCommand("INSERT Infos (Title) VALUES ('this is an added title')");
我發現this site告訴我,有可能實施ExecuteCommand爲您的ObjectContext的擴展方法,保留現有代碼不變,通過在項目中添加此代碼到一個靜態方法:
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();
}
}
但我試過把它放在我使用它的類中,(2)在實體生成的類文件中,(3)在項目中的靜態類中,但總是得到各種錯誤。 我需要把這個方法準確的放在哪裏?
上述網站也說:
ExecuteCommand被視爲 在將來的 版本增強實體框架
不ExecuteCommand()存在於最新版本的實體框架?我正在使用隨Visual Studio 2008 SP1一起安裝的實體框架。
嘗試使用擴展方法時,您會得到什麼錯誤? – Konamiman 2009-11-10 15:19:25
好吧,它編譯時,我指定我把它作爲*靜態*,所以它似乎工作,但我無法運行應用程序來測試它,因爲在這個問題中描述的另一個問題:http: //stackoverflow.com/questions/1708964/why-do-i-get-this-error-when-i-try-to-open-an-mdf-database-via-path-filename-in-e – 2009-11-10 15:50:31
這: 'CommandType.StoredProcedure'也可能有影響,因爲我猜你想要執行一個請求,而不是存儲過程。 – 2010-04-27 12:49:01