【问题标题】:Perform operations on a database using a DataSet without caching使用 DataSet 对数据库执行操作而无需缓存
【发布时间】:2012-05-28 12:29:18
【问题描述】:

如果这将是一个糟糕的问题,我很抱歉。我做过很少的数据库编程。这可能是从头开始阅读它的时候了,我可能会在某个时候这样做,但我现在时间紧迫。

有没有办法可以执行类似 DataSet 的操作,例如在 Oracle 数据库上插入、删除等而不缓存数据库块?我正在寻找一些东西来避免为具有任意字段/列的对象输入笨拙的 SQL 查询。我可以定义一个 DataRow 并插入它(或根据某个键更新它)。我不知道如何通过缓存来做到这一点,因为我不可能缓存整个数据库。它相当大。

由于实体在很大程度上是任意的,我不想定义静态类来包装它们。

【问题讨论】:

  • 您是否使用键入的DataSets?或者您是否将DataReader 与基本DataSet 实例一起使用?

标签: c# database oracle dataset odp.net


【解决方案1】:

我不确定我是否完全理解您的问题。您可以创建一个具有执行 Upsert 的方法的类。该方法将接收 DataRow,您可以在该方法中设置规则以根据数据行中的值插入或更新数据库。但是您必须编写自己的 SQL 查询来插入或检查数据库中是否存在记录,然后进行更新。

为什么不使用 ORM。像实体框架,NHibernate

  1. Entity Framework
  2. NHibernate

您不需要编写任何 SQL 查询,您可以自定义选项以启用LazzyLoading

【讨论】:

  • 这是我应该做的,但老实说,我担心学习这些框架可能需要比我更多的时间。我真的很想快速解决这个问题,至少现在是这样。
【解决方案2】:

如果您使用键入的DataSet,您可以为您的Fill 方法提供参数。让他们只用必要的行填充DataTable

如果您使用DataReader,您可以在查询字符串中提供任何类型的查询。

基本上,您只能“缓存”您想要更改的行。

【讨论】:

  • 这可能是我现在想做的事情。感谢您的提示。
【解决方案3】:

有点难以说出你真正需要什么......

但您可以查询 Oracle 数据字典视图以获取元数据,然后根据这些结果动态构建 SQl 语句。

【讨论】:

  • 我基本上想在 DataSet/DataTable 没有 使用 Fill 方法缓存的情况下执行操作。除非我以某种方式误解并且它不会缓存整个表。
猜你喜欢
  • 1970-01-01
  • 2012-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-10
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
相关资源
最近更新 更多