【问题标题】:Can we ignore source schema when querying using IDbCommand我们可以在使用 IDbCommand 查询时忽略源模式吗
【发布时间】:2011-04-16 22:46:55
【问题描述】:

我正在使用 System.Data.IDbCommand 来查询具有主键的表。我的查询将它与其他表连接起来,并在主键列中获取具有相同值但在其他连接列中具有不同值的多条记录,这是预期的行为。

但是,IDbCommand.ExecuteReader().GetSchemaTable() 显示读取器的内部架构表在该列上有一个主键。现在,如果我尝试将此阅读器加载到 System.Data.DataTable(普通旧 DataTable,未键入),它会引发约束冲突异常(显然是因为它试图为主键列插入相同的值)。

有没有一种方法可以指示 ExecuteReader() 忽略源架构或不强制执行约束?

其他信息:这是 .Net 2.0。

提前致谢

【问题讨论】:

  • 结果表不应该有那个主键。您使用的是什么提供商?

标签: c# .net datatable


【解决方案1】:

伙计们,我找到了解决方法。这不是一个解决方案。我修改了我的查询以将该列从其他一些表中作为外键列显示,该外键列引用我的原始表的主键列。

干杯!

【讨论】:

    【解决方案2】:

    你可以使用类似的东西

    DataTable result = new DataTable();
    SqlCeDataAdapter adapter = new SqlCeDataAdapter(command);
    adapter.Fill(result);
    

    使用您的查询初始化命令并使用正确的提供程序。

    【讨论】:

    • 虽然我确信这会起作用(因为 MSDN 这么说),但我将无法使用它,因为我将要为我的整个项目更改 DataAdapter 或为只是运行这个查询。我找到了另一种方法来完成这项工作。但是我仍然会将其标记为答案,因为我最初的问题没有指定我刚刚列出的约束。感谢您花时间回答我的问题。
    猜你喜欢
    • 2015-08-04
    • 2014-12-30
    • 1970-01-01
    • 2017-03-24
    • 2016-08-23
    • 1970-01-01
    • 2013-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多