我正在将运行在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一起安装的实体框架。
答案 0 :(得分:2)
.NET Framework 4的ObjectContext类具有ExecuteStoreCommand和ExecuteStoreQuery方法,这些方法似乎正是您所寻找的。 p>