如果我一直遵循解耦,似乎DataAccess层应该从模型中解耦出来。但随后将信息传递给数据访问层就变成了cumbersome...Instead:
void Save(myModel modelObject) {
//db.Save here
}我会做的
void Save(string objectprop1,objectprop2...) {
}这不是违背了简单性的目的吗?
我认为将模型传递给我的数据访问层是非常干净的代码,但是它不是解耦的。
发布于 2011-11-15 08:17:33
您的数据访问层当然应该了解您的域模型。你的想法是正确的,将它们分解成无数的原始参数将是一件非常糟糕的事情。
解耦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是使用它们的后端实现。
https://stackoverflow.com/questions/8129967
复制相似问题