C# 工作单元和存储库模式以及dispose数据库上下文
我有工作单元类,我有处理数据库上下文的方法。但我也将数据库上下文传递给存储库类-NotesRepository-我是否也应该在NotesRepository类中处理上下文,还是不需要,因为该上下文是在工作类单元中处理的C# 工作单元和存储库模式以及dispose数据库上下文,c#,C#,我有工作单元类,我有处理数据库上下文的方法。但我也将数据库上下文传递给存储库类-NotesRepository-我是否也应该在NotesRepository类中处理上下文,还是不需要,因为该上下文是在工作类单元中处理的 public class UnitOfWork : IDisposable { private DatabaseContext context = new DatabaseContext(); private NotesRepository notesReposi
public class UnitOfWork : IDisposable
{
private DatabaseContext context = new DatabaseContext();
private NotesRepository notesRepository;
public NotesRepository NotesRepository
{
get
{
if (this.notesRepository == null)
{
this.notesRepository = new NotesRepository(context);
}
return notesRepository;
}
}
private bool disposed = false;
protected virtual void Dispose(bool disposing)
{
if (!this.disposed)
{
if (disposing)
{
context.Dispose();
}
}
this.disposed = true;
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
}
这是存储库类:
public class NotesRepository
{
private DatabaseContext context;
public NotesRepository(DatabaseContext context)
{
this.context = context;
}
public IQueryable<Notes> GetAllNotes()
{
return (from x in context.Notes
orderby x.CreateDate descending
select x);
}
}
public class NotesRepository
{
私有数据库上下文;
public NotesRepository(数据库上下文)
{
this.context=上下文;
}
公共IQueryable GetAllNotes()
{
返回(来自context.Notes中的x)
orderby x.CreateDate降序
选择x);
}
}
我建议在UnitOfWork类中执行此操作
using(var ctx = new DatabaseContext())
{
var repo = new NotesRepo(ctx);
}
现在,它将通过using得到适当的处理,而无需在存储库中进行处理