【发布时间】:2013-03-27 07:07:40
【问题描述】:
我正在尝试实现一个简单的 3 层应用程序,组装如下:
1 - DAL(它是一个 UnitOfWork 和 IRepository,带有 POCO 的实体(实体框架 T4))
2 - BLL(参考 DAL)
3 - UI(参考 BLL)
我阅读了很多文章,所以我决定实现一个经典的 UnitOfWork-Repository 模式,其中这些存储库不知道任何自我跟踪实体:
public interface IRepository<T>
{
void Attach(T entity)
{
...
}
问题: 如果我的组件将在 winForm 上下文中运行,则某些 UI 控件可能会更改某些实体属性,因此由于内部对象上下文已经在跟踪我的实体,因此作为 Edit(T entity) 进一步调用 Repository 的方法将毫无用处。显然,如果我在 web 上下文中运行一切正常,因为 web 平台是无状态的。 一个简单的技巧可以是在每次 BLL 操作后处理我的 objectContext,但我不确定是否要使用此解决方法。 所以我正在寻找一个更漂亮的解决方案来管理所有案例。
IRepository 是否应该忽略有关 STE 的任何内容? BLL 是否应该始终处理自己的内部存储库和/或单元以模拟无状态环境?
【问题讨论】:
标签: entity-framework entity repository-pattern