我正在使用ASP.Net 5/EF7开发新的Web应用程序。使用EF7的存储库模式
我也在考虑知识库模式以及实体框架。
我正在寻找一些建议来处理我的通用存储库类。由于EF7目前还没有Find()方法,所以在通用资源库类中实现GetById(int id)方法时遇到了一些困难。我知道可以使用FirstOrDefault(),但我无法访问模型中的实际“Id”。
你能帮我找一个替代品吗?
下面是我的通用仓库等级:
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
protected readonly PersonDBContext _dbContext;
public Repository(PersonDBContext context)
{
_dbContext = context;
}
public IEnumerable<TEntity> GetAll()
{
return _dbContext.Set<TEntity>().ToList();
}
public TEntity Get(int? id)
{
return _dbContext.Set<TEntity>().FirstOrDefault();
}
public IEnumerable<TEntity> Find(Expression<Func<TEntity, bool>> predicate)
{
return _dbContext.Set<TEntity>().Where(predicate);
}
public void Add(TEntity entity)
{
_dbContext.Set<TEntity>().Add(entity);
}
public void Remove(TEntity entity)
{
_dbContext.Set<TEntity>().Remove(entity);
}
}
感谢 赛义德
“TEntity”上是否存在可引用的一些常见属性/字段?你能说出'TEntity'的样子吗? – Nkosi
当我将它传递给存储库类时,TEntity将成为模型。这是通用的存储库类。在这种情况下,TEntity将被称为例如人。 – Xerxes1TheGreat