【发布时间】:2012-09-02 05:52:00
【问题描述】:
我正在尝试使用 UI、BLL 和 DAL 构建三层架构。我正在使用带有存储库模式的实体框架。
我的问题是:实体框架生成的实体是否应该充当我的 BLL 的一部分,还是这些只是 DAL 对象?
询问的原因是因为感觉就像我在复制代码。例如:我有一个由实体框架直接从我的数据库生成的 DAL.CatEntity。这一切都很好,花花公子。然后我使用我的存储库(它是我的 DAL 的一部分)将数据提取到 DAL.CatEntity 中。然后我在我的 BLL 中使用这个 DAL.CatEntity,提取它的所有数据,并将其转换为 BLL.Cat。然后我在我的 UI 层中使用这个 BLL.Cat。
下面是一些超级简化的代码。
BLL
public Cat GetCat(string catName){
CatEntityRepository _repository = new CatEntityRepository;
Cat cat = null;
CatEntity catEntity = _repository.GetSingleCat();
cat = ConvertToCat(catEntity);
return cat;
}
private Cat ConvertToCat(CatEntity entity){
return new Cat(){
Name = entity.Name,
Color = entity.Color,
//....
}
}
用户界面:
public ActionResult method(){
Cat cat = BLL.GetCat();
//......
}
似乎没有必要同时拥有 Cat 和 CatEntity。我可以只使用我的 EntityFramework 实体作为我的 BLL 的一部分,而将存储库用作我的 DLL 吗?
谢谢。
【问题讨论】:
-
您最好使用 AutoMapper 之类的东西,而不是创建自己的自定义映射类。所涉及的工作量要少得多。
标签: asp.net asp.net-mvc entity-framework data-access-layer business-logic-layer