我用这个DAL构建了一个基本DAL,它可以检索数据,还有一个有几个对象的业务人员。一旦我将数据映射到业务对象并对其做了一些事情,我还想将数据写回数据库。有些业务对象有很多属性,因此将业务对象的每个值作为参数传递给相应的数据服务方法是不可能的。
我一直在想的其他方法:
这是我第一次做这种事。对我来说,后者听起来更好,但也许还有其他更好的方法?或者第一个更好是因为一些我不知道的原因?
非常感谢!
编辑:我不能使用LinQ2SQL,因为我使用C# Express (它只支持查询本地DB,而我的是远程数据库)
发布于 2009-03-31 16:26:14
把你的目标传递给你的达尔。如果手动写入DAL层,则DAL层应该知道如何获取实体并将其持久化到DB,以及如何从数据库返回实体。DAL是关于你的实体对非易失性介质的坚持.
发布于 2009-03-31 16:21:38
你还没提到使用LINQ。这是因为你还没有使用.NET 3.5吗?
而且,你不需要把你的DAL变成通用的。DAL的调用方没有试图更新业务对象的所有属性,对吗?他们可能想要更新其中的部分,所以您应该提供一个API来实现这一点。例如,他们可能只想向联系人对象添加地址,甚至可能更新电话号码。您需要在执行调用方真正想要做的事情和执行此任务所需的独立方法之间进行权衡。
发布于 2009-03-31 16:47:39
DAL应该完全涉及业务对象和特定数据表示之间的映射。这就是为什么与域对象一起工作的存储库模式允许您切换到不同的持久性实现,甚至可能不是数据库。
您需要向DAL的方法传递太多的参数,然后提到一个只需要传递2或3个值的示例。如果是这样的话,将其作为方法的参数传递是合理的。如果要传递更多的值,可以通过使用要保存的值子集定义接口来实现。这样,您就可以清楚地指定方法将要处理的信息。
不管上面的情况如何,不要让方法过于具体,因为你最终会有很多组合,这会使你更难完成任务。
https://stackoverflow.com/questions/701804
复制相似问题