您好我的EF存储库
中有以下泛型类型方法 public class EFRepository<T> : IRepository<T> where T : class
{
public EFRepository(DbContext dbContext)
{
if (dbContext == null)
throw new ArgumentNullException("dbContext");
DbContext = dbContext;
DbSet = DbContext.Set<T>();
}
protected DbContext DbContext { get; set; }
protected DbSet<T> DbSet { get; set; }
public virtual IQueryable<T> GetAll()
{
return DbSet;
}
public virtual IQueryable<T> GetById(int loc_id)
{
return DbSet(loc_id);
}
}
在DbSet(loc_id)上我得到了智能说法&#34;方法,代表或事件是预期的&#34;
请让我知道如何正确编写此查询以使用loc_id获取列表。 谢谢
答案 0 :(得分:0)
您的T
类型应该从具有LocId
属性的其他类型继承。例如:
public class DatabaseEntity {
// This is the type all your specific database entity types
// should be inherited from
public int LocId {get; set;}
}
然后实现通用存储库方法:
public virtual IQueryable<T> GetAll(int loc_id) where T: DatabaseEntity
{
return DbSet<T>().Where(item => item.LocId == loc_id);
}
答案 1 :(得分:0)
您可能必须根据实体的loc_id属性名称编辑Where
子句中的lambda,但这应该有效。它使用LINQ来查询您的DBSet,其中entity.loc_id等于传递给GetById
的loc_id
public virtual IQueryable<T> GetById(int loc_id)
{
return DbSet.Where(x=>x.loc_id == loc_id).AsQueryable();
}