我有继承DbContext
的类,我如何使用它?
class ApplicationDbContext : DbContext
{
public DbSet<MyModel> Models {get;set;}
}
像这样:
class Repository<MyModel>
{
private readonly ApplicationDbContext _context = new ApplicationDbContext();
public async Task Add<MyModel>(MyModel item)
{
if(item == null)
throw new ArgumentNullException();
var contains = await GetItemByName(item.UniqueNameAndThisNotId );
if(contains != null)
throw new InvalidOperationException();
_context.AddAsync(item);
_context.SaveChangesAsync();
}
public async Task<MyModel> GetItemByName(string uniqueNameAndThisNotId)
{
return await Task.FromResult(_context.Single(x => x.UniqueNameAndThisNotId == uniqueNameAndThisNotId));
}
}
或者像这样:
class Repository<MyModel>
{
public async Task Add<MyModel>(MyModel item)
{
ApplicationDbContext context = new ApplicationDbContext();
if(item == null)
throw new ArgumentNullException();
var contains = await GetItemByName(item.UniqueNameAndThisNotId );
if(contains != null)
throw new InvalidOperationException();
context.AddAsync(item);
context.SaveChangesAsync();
}
public async Task<MyModel> GetItemByName(string uniqueNameAndThisNotId)
{
ApplicationDbContext context = new ApplicationDbContext();
return await Task.FromResult(context.SingleOrDefault(x => x.UniqueNameAndThisNotId == uniqueNameAndThisNotId));
}
}
我认为最好的方法是通过构造传递上下文
protected readonly ApplicationContext _context;
public GenericRepository(ApplicationContext context)
{
_context = context;
}