干杯!我对将工作单元与存储库一起使用有一些疑问。特别是 Entity Framework 中子上下文的角色。
我搜索了很多有关该主题的信息,但是所有发现的只是使用模式的不同类型,我感到困惑,而且我无法理解主要思想。
1.我应该在哪里实现处置和节省?
-是否在DbContext的继承类中正确实现了Disposable?
之后在存储库和工作单元中还是仅在Uni fo Work中实现?
-将方法保存在工作单元或存储库中的何处?
我的存储库将是通用的
我的代码在架构师风格和其他细节上是否正确?请告诉我我的想法是否错误。
interface IRepository : IDisposable
{
void Create();
void Delete();
void Update();
void Get();
T getSomeByExpression()
...Some another costum operations
...should I remember about Save here?
}
class Repository : IRepository
{
SomeContext context = new SomeContext();
...Using using(context = new SomeContext()){} in functions??
...
....Disposing?
}
interface IUnitOfWork : IDisposable
{
...Which methods I should realize?
Commit()
Save()
...Need some another methods like rollback, Attach() Add() or Dispose or something else?
}
class UnitOfWork
{
...Collection of Repository
}
在逻辑级别的工作单元之后使用吗?
请帮助我理解这个主题。
我想知道如何正确地结合使用工作单元模式和存储库模式,尤其是包括DBContext。此外,我还想知道在何处使用诸如Dispose之类的操作。
哪些操作通常应该在UnitOfWork,Save等中。
如何在存储库中处理上下文?
最佳答案
这是关于使用MVC实现工作单元的great article。
我通常在业务交易完成后就处置该部门。例如,如果操作是要创建一个父级,一些子级并附加它们,则完成后,我将立即处理。
添加了与上述有关的更多详细信息:
在重读您的问题时,听起来您想了解有关工作单元理论而不是实际实现的更多信息,我深表歉意。
这是与之相关的更好的文章on MSDN,但我将为您总结。
通常,我使用工作单元模式将所有相关的存储库组合在一起,以解决并发问题,同时仍将存储库保持独立。
我不确定我是否完全理解您的问题,但是我认为您是在问应该管理工作单元的生命周期的什么内容?
这是与此相关的另一个SO post,但是摘要是当前拥有工作单元的任何内容,并且与您如何设置工作单元的范围有关。例如,它可以是业务命令或MVC操作。
您的意思是,应该在哪里处置DbContext?我认为应该以工作为单位。如果要在一个工作单元中创建/处理多个上下文,也许应该将它们分成两个不同的单元。
您的工作单元是处理上下文和事务的对象,并且应包含防止重复更新的逻辑,因此,保存功能应由工作单元控制。
关于c# - 在Entity Framework中使用存储库和单元工作模式正确处理吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11809979/