1

如果我一直遵循解耦,看起来 DataAccess 层应该与模型解耦。但是随后将信息传递给数据访问层变得很麻烦......而不是:

void Save(myModel modelObject) {
//db.Save here
}

我会做

void Save(string objectprop1,objectprop2...) {
}

这不会破坏简单的目的吗?

我认为将模型传递给我的数据访问层是非常干净的代码,但它并没有解耦。

4

1 回答 1

3

您的数据访问层当然应该了解您的域模型。您认为将它们分解为无数原始参数将是一件非常糟糕的事情,这是正确的。

解耦 DAL 并不意味着从 DAL 中删除模型的依赖关系,而是从模型中删除 DAL 的依赖关系。例如,DAL 可以通过简单的存储库来表示:

interface Repository<TModel> where TModel : BaseModel
{
    TModel Get(int id);
    IEnumerable<Tmodel> Get();
    void Delete(int id);
    TModel Save(TModel model);
}

或者类似的东西,有很多方法可以设计它。这里的想法是,DAL 可以自由地将事物存储在与模型所代表的结构不同的结构中。但从模型的角度来看,它们只是坚持存储库。实际的数据持久性可能是不同的表结构(例如,优化数据库的性能,而不必更改业务模型作为副作用),甚至完全在多个数据库中。

DAL 了解域模型并没有错。事实上,作为域的一部分,DAL 应该知道它。模型是中心的,DAL 是使用它们的后端实现。

于 2011-11-15T00:17:33.047 回答