Kam*_*yar 9 c# architecture entity-framework-4
我正在使用实体框架的分层架构.这是我到目前为止所提出的(所有项目除了UI都是类库):
实体:POCO实体.完全坚持无知.没有参考其他项目.由Microsoft的ADO.Net POCO实体生成器生成.
DAL:带有上下文类的EDMX(实体模型)文件.(t4生成).参考文献:Entities
BLL:业务逻辑层.将在此层上实现存储库模式.参考文献:Entities,DAL.这是填充objectcontext的地方:var ctx=new DAL.MyDBEntities();
UI:表示层:ASP.NET网站.引用:Entities,BLL+配置文件中实体的连接字符串条目(问题#2).
现在我的三个问题:
在我的UI中,我按如下方式访问BLL:
var customerRep = new BLL.CustomerRepository();
var Customer = customerRep.GetByID(myCustomerID);
问题是我必须在我的UI的web.config/app.config中定义实体连接字符串,否则我会得到一个运行时异常.IS定义UI中的实体连接字符串会破坏图层的区别吗?或者它是否可以在多层分层架构中进行访问.
感谢并为这个冗长的问题道歉.
RPM*_*984 12
BLL:业务逻辑层.将在此层上实现存储库模式
我真的不同意这一点.存储库旨在抽象底层数据存储(SQL Server,XML等).这是一个数据层问题,而不是业务问题 - 因此它为什么要在BLL中呢?
我的图层判断方法是否正确?
的种类.:)这有点主观,但通常你有:
现在,通常这三个被进一步分解.所以在你的情况下我会:
我应该采取任何额外的步骤来执行chage跟踪,延迟加载等(通过等我的意思是实体框架在传统的1项目,非POCO代码生成中涵盖的功能)?
如果您没有使用POCO(例如您使用默认代码生成).然后,您无需担心更改跟踪.
至于延迟加载 - 这是你需要做出的决定.我个人禁用延迟加载,因为我不希望懒惰的开发人员在他们没有要求时返回一堆记录.
相反,强制调用代码(例如业务/服务)急切地加载它需要的东西.
如果你使用ASP.NET MVC应用程序,如果你有延迟加载,你的View最终可能会在渲染时调用数据库,打破MVC模式.
| 归档时间: |
|
| 查看次数: |
3717 次 |
| 最近记录: |