0

我基本上有一个与任何业务逻辑完全隔离的数据库层。这意味着每当我准备好将一些业务数据提交到数据库时,我都必须将所有业务属性传递到数据方法的参数中。例如:

Public Function Commit(foo as object) as Boolean

这很好用,但是当我进行需要几十个参数的提交和更新时,可能需要大量输入。更不用说我的两个方法——更新和创建——采用相同的参数,因为它们本质上做同样的事情。我想知道的是,传递这些参数的最佳解决方案是什么,这样我就不必在每次发生变化时都更改这两种方法中的参数以及减少我的打字:) 我想到了一些可能的解决方案。一种是将所有 sql 参数移动到数据类的类级别,然后将它们存储在我在业务层中设置的某种数组中。任何帮助都会很有用!

4

5 回答 5

0

所以本质上你想传入一个参数列表

为什么不重做 Commit 函数并让它接受 Parameter 对象列表?

于 2009-04-17T19:27:09.423 回答
0

如果您在 SQL 2008 上,您可以使用合并来替换插入/更新杂耍。有时称为 upsert。

于 2009-04-17T19:27:14.850 回答
0

您可以创建一个struct来保存参数值。

于 2009-04-17T19:30:17.887 回答
0

感谢您的回复,但我想我已经找到了更好的方法来做我正在做的事情。它类似于使用 upsert,但我所做的是使用一种名为 Commit 的方法来查找给定的主键。如果在数据库中找到记录,则执行更新命令。如果没有,我会执行插入命令。由于参数相同,您不必担心更改它们。

于 2009-04-22T17:53:05.660 回答
0

对于您的问题,我猜迭代器设计模式是最好的解决方案。传入一个接口实现说 ICommitableValues 你可以像这样传入一个密钥对枚举值。键是列名,值是列可提交值。一个属性甚至专门用于返回要在其中插入这些值和/或存储过程等的表名。

为了节省输入,您可以使用声明性编程语法(属性)来声明可提交属性,并且中间件中的主类可以使用反射来提取这些可提交属性的值并从中准备 ICommitableEnumeration 实现。

于 2009-04-22T18:02:07.183 回答