如何扩展GenericRepository?

时间:2016-06-22 16:27:53

标签: c# asp.net

public class GenericRepository<TEntity> where TEntity : class
{
    internal DbContext context;
    internal DbSet<TEntity> dbSet;

    public GenericRepository(DbContext context)
    {
        this.context = context;
        this.dbSet = context.Set<TEntity>();
    }

我想创建由GenericRepository扩展的MemberRepository。

所以我试过这样,

public class MemberRepository<Member> : GenericRepository<Member> where Member : class
    {
        public MemberRepository(DbContext context) : base(context){}

        public IQueryable<Member> GetMemberList(SearchOptions options)
        {
            IQueryable<Member> query = dbSet;

            query = query.Where(x= > x.name == "test"); //!!
        }

但我不能按名称搜索,错误信息说,

  

会员不包含&#39; name&#39;的定义没有延伸   方法&#39;名称&#39;接受类型&#39;会员&#39;的第一个论点。可能   找到。

但是会员类包含名称而且它是公开的。

我认为扩展泛型的方式是错误的。

我做错了什么?请给我一个建议。

这是我的会员班,

[Table("member")]
public class Member
{
    [Key]
    public int ID {get; set;}
    public string name {get; set;}
    public int schoolId {get; set;}

    [ForeignKey("schoolId")]
    public School school { get; set; }
}    

1 个答案:

答案 0 :(得分:1)

我认为你的泛型与成员名称和一个通用参数类有点不匹配,这应该解决问题

public class MemberRepository : GenericRepository<Member>