C#数据层和Dto

Mr.*_*Mr. 5 c# architecture data-access-layer

我最近加入了一家使用类型化数据集作为'Dto'的公司.我认为它们真的很垃圾,并希望将它改成更现代和用户友好的东西.所以,我正在尝试更新代码,以便数据层更通用,即使用接口等,另一个人不知道Dto是什么,我们对如何完成它有轻微的分歧.

如果不试图让人们思考我的思维方式,我想向你们提供关于Dto可以存在的层次的公正答案.DAL,BL和Presentation或仅在这些图层中设置一个小子集.

此外,是否应该或不应该在DAL中存在IList对象.

谢谢.

Bro*_*ski 5

这真的取决于你的架构.

在大多数情况下,您应该尝试对接口进行编码,那么实现的内容并不重要.如果您返回ISomething,它可能是您的SomethingEntity或您的SomethingDTO,但只要它实现接口,您的消费代码并不在意.

您应该在具体集合或数组上返回IList/ICollection/IEnumerable.

您应该首先尝试做的是分离您的代码,并通过在您的层之间插入一些接口(例如DataAccess层的存储库)使其松散耦合.然后,您的存储库将返回由接口封装的实体.这将使您的代码更易于测试,并允许您更轻松地进行模拟.一旦完成测试,您就可以开始以更低的风险更改实施.

如果您确实开始使用接口,我建议尽快而不是稍后集成诸如Windsor之类的IoC.如果你从一开始就这样做,它将使以后的事情变得更容易.