首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从分层架构更新DB :最佳方法?

从分层架构更新DB :最佳方法?
EN

Stack Overflow用户
提问于 2009-03-31 16:12:40
回答 4查看 415关注 0票数 1

我用这个DAL构建了一个基本DAL,它可以检索数据,还有一个有几个对象的业务人员。一旦我将数据映射到业务对象并对其做了一些事情,我还想将数据写回数据库。有些业务对象有很多属性,因此将业务对象的每个值作为参数传递给相应的数据服务方法是不可能的。

我一直在想的其他方法:

  1. 将业务对象传递给相应的数据服务,然后以所有值作为参数执行SP。-糟透了,因为我必须将一个业务对象传递给DAL (违反分离),并且可能以>50 parameters
  2. create为空(?)在业务对象中使用来自业务对象的值填充数据集,将该数据集传递给数据服务,并通过数据适配器更新数据库。我想用“.其中0"-SQL字符串创建一个空数据集。这是个好练习吗?

这是我第一次做这种事。对我来说,后者听起来更好,但也许还有其他更好的方法?或者第一个更好是因为一些我不知道的原因?

非常感谢!

编辑:我不能使用LinQ2SQL,因为我使用C# Express (它只支持查询本地DB,而我的是远程数据库)

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2009-03-31 16:26:14

把你的目标传递给你的达尔。如果手动写入DAL层,则DAL层应该知道如何获取实体并将其持久化到DB,以及如何从数据库返回实体。DAL是关于你的实体对非易失性介质的坚持.

票数 2
EN

Stack Overflow用户

发布于 2009-03-31 16:21:38

你还没提到使用LINQ。这是因为你还没有使用.NET 3.5吗?

而且,你不需要把你的DAL变成通用的。DAL的调用方没有试图更新业务对象的所有属性,对吗?他们可能想要更新其中的部分,所以您应该提供一个API来实现这一点。例如,他们可能只想向联系人对象添加地址,甚至可能更新电话号码。您需要在执行调用方真正想要做的事情和执行此任务所需的独立方法之间进行权衡。

票数 1
EN

Stack Overflow用户

发布于 2009-03-31 16:47:39

DAL应该完全涉及业务对象和特定数据表示之间的映射。这就是为什么与域对象一起工作的存储库模式允许您切换到不同的持久性实现,甚至可能不是数据库。

您需要向DAL的方法传递太多的参数,然后提到一个只需要传递2或3个值的示例。如果是这样的话,将其作为方法的参数传递是合理的。如果要传递更多的值,可以通过使用要保存的值子集定义接口来实现。这样,您就可以清楚地指定方法将要处理的信息。

不管上面的情况如何,不要让方法过于具体,因为你最终会有很多组合,这会使你更难完成任务。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/701804

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档