我看到了一些在context类中使用ASP.NET MVC Unit of Work来执行事务提交的应用程序示例。
这是一个很好的实践吗??
public interface IUnitOfWork
{
void Commit()
}
public class DatabaseContext : DbContext, IUnitOfWork
{
public DbSet<Entity> Entity { get; set; }
public void Commit()
{
base.SaveChanges();
}
}
public class EntityRepository : IRepository<Entity>
{
private DatabaseContext _context;
public EntityRepository(DatabaseContext Context)
{
_context = Context;
}
void Insert()
{
_context.Entities.Add(Entity);
}
void Save()
{
_context.Commit();
}
}或者更好
public interface IUnitOfWork
{
void Commit()
}
public class DatabaseContext : DbContext
{
public DbSet<Entity> Entity { get; set; }
}
public class EntityRepository : IRepository<Entity>, IUnitOfWork
{
private DatabaseContext _context;
public EntityRepository(DatabaseContext Context)
{
_context = Context;
}
void Insert()
{
_context.Entities.Add(Entity);
}
void Commit()
{
_context.SaveChanges();
}
}我不知道这个方法,你说呢?
发布于 2013-11-19 21:58:22
这是我实现的类的一部分
public class UnitOfWork : IUnitOfWork
{
private ModelEntities _context;
public ModelEntities Context
{
get { return _context; }
set { _context = value; }
}
public UnitOfWork(ModelEntities context)
{
_context = context;
}
public void Save()
{
_context.SaveChanges();
}
public void Dispose()
{
this.Dispose(true);
}
public void Dispose(bool dispose){
_context.Dispose();
}
}除此之外,我们还使用工厂来获取UnitOfWork的一个实例
发布于 2017-02-16 20:59:30
我认为你应该改变你创建存储库的方式。工作单元的思想是为所有事务提供唯一的对象。考虑更改存储库的构造函数,以接收唯一的工作单元,而不是上下文。
看一下:
https://stackoverflow.com/questions/20072500
复制相似问题