EF:使用SQL查询Oracle删除多行

时间:2014-07-08 02:02:59

标签: c# oracle entity-framework

如何使用Entity Framework在Oracle的单个SQL查询中删除多行?

"DELETE FROM WOTRANSITION WHERE woiddisplay = @id OR woid = @id" 

Context.Database.ExecuteSqlCommand(
    "DELETE FROM WOTRANSITION WHERE woiddisplay = @id OR woid = @id",
    new[] { new SqlParameter("@id", id) });

上面的示例代码错误,将返回错误:

  

无法将类型为“System.Data.SqlClient.SqlParameter”的对象强制转换为“Oracle.ManagedDataAccess.Client.OracleParameter

2 个答案:

答案 0 :(得分:1)

您尝试连接到Oracle,但是您正在使用SqlParameter

改为使用OracleParameter

Context.Database.ExecuteSqlCommand(
    "DELETE FROM DPCMWOTRANSITION WHERE woiddisplay = :id OR woid = :id",
    new[] { new OracleParameter("id", id) });

我也做了一些其他更改,因为我不认为参数名称是完全正确的。

答案 1 :(得分:0)

我自己找到了解决方案。这是答案:

string query = string.Format("DELETE FROM WOTRANSITION WHERE woiddisplay = {0} OR woid = {0}", id);
Context.Database.ExecuteSqlCommand(query);
Context.SaveChanges();

有关详细信息,请Solution