处理SQL参数的最佳方法?

时间:2009-04-17 19:23:28

标签: sql .net parameters data-access-layer

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

Public Function Commit(foo as object) as Boolean

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

5 个答案:

答案 0 :(得分:0)

所以基本上你想要传递ListParameters

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

答案 1 :(得分:0)

如果您在SQL 2008上可以使用merge来替换insert / update juggling。有时称为upsert。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

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

要保存类型,可以使用声明性编程语法(Attributes)来声明可提交属性,中间件中的主类可以使用反射来提取这些可提交属性的值,并从中准备ICommitableEnumeration实现。

相关问题