【问题标题】:EF: Delete Multiple Rows using SQL Query OracleEF:使用 SQL 查询 Oracle 删除多行
【发布时间】:2014-07-08 10:53:35
【问题描述】:

如何使用 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”类型

【问题讨论】:

  • 无法将“System.Data.SqlClient.SqlParameter”类型的对象转换为“Oracle.ManagedDataAccess.Client.OracleParameter”类型......这是完整的错误消息@GrantWinney

标签: c# oracle entity-framework


【解决方案1】:

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

改用OracleParameter

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

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

【讨论】:

    【解决方案2】:

    我自己找到了解决方案。答案如下:

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

    更多详情,Solution

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-22
      • 2021-04-11
      • 1970-01-01
      • 2021-11-25
      • 2023-01-22
      • 1970-01-01
      • 2020-02-17
      • 2019-01-01
      相关资源
      最近更新 更多