【发布时间】:2010-12-14 04:05:54
【问题描述】:
因此,据我了解,它具有良好的松散耦合,我应该能够在应用程序根目录用几行代码替换我的 DAL。
我编写了 2 个 DAL,Linq-to-sql 和一个 JSon 文件存储库(用于测试,因为我想试用 System.Web.Scripting.JavascriptSerializer)。
linq to sql 将创建实体而不是我的业务模型。并通过 IRepository 向上馈送它们,该 IRepository 在应用程序根目录中使用构造函数注入。
我的 JSon 层没有任何要反序列化的自动生成的类,所以我不知道有一种简单的方法让它依赖于接口或抽象类并且仍然起作用。
此问题基于以下假设/理解:
- 我相信我需要 linq to sql 层来实现接口,以便编译时的应用程序域可以指示实体类将有一个位置来读取/写入所有当前模型的字段
- 任何业务逻辑都需要模型层中具有几乎相同名称和相同属性的另一组类
- 然后需要将 DAL 对象转换为业务对象并返回的转换方法。 (即使双方都实现相同的接口,这似乎非常低效)
- 如果模型类或接口(接口、业务类、视图、dal 实体)发生更改,则此代码是另一个必须进行更改的地方
- 然后需要将 DAL 对象转换为业务对象并返回的转换方法。 (即使双方都实现相同的接口,这似乎非常低效)
- 任何替代 DAL 的反序列化需要我在该层中创建具有相同属性和字段的“实体”(更多重复)
因此,为了满足所有灵活性/敏捷性目标,我似乎需要为每个应用程序域/业务对象提供一个接口,一个业务逻辑可以存在的具体类,以及实现该接口的 DAL 对象(这意味着不t 自动生成的实体必须是手工编码的纯复制)。
如何在没有大量重复和丢失 DRY 的情况下使用松耦合?
【问题讨论】:
标签: asp.net-mvc domain-driven-design dry data-access-layer