我正在将在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类具有ExecuteStoreCommand和ExecuteStoreQuery方法,它们似乎正是您所寻找的。
关于c# - Entity Framework 中LINQ-to-SQL的ExecuteCommand等效于什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1708564/