使用DataSet在数据库上执行操作而不进行缓存

时间:2012-05-28 12:29:18

标签: c# database oracle dataset odp.net

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

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

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

3 个答案:

答案 0 :(得分:2)

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

为什么不使用ORM。像Entity frameowkrk,NHibernate

这样的东西
  1. Entity Framework
  2. NHibernate
  3. 您不需要编写任何SQL查询,也可以自定义选项以启用LazzyLoading

答案 1 :(得分:1)

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

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

基本上您只能'缓存'您想要更改的行。

答案 2 :(得分:0)

有点难以分辨你真正需要的东西......

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