2017-01-10 69 views
0

这是ApplicationUser:过滤DbSet中的EntityFramework CodeFirst

public class ApplicationUser : IdentityUser<long> 
{ 
    public string Firstname { get; set; } 
    public string Lastname { get; set; } 
    public UserTypes Type { get; set; } 
    public string FullName { get { return $"{Firstname ?? ""} {Lastname ?? ""}".Trim(); } } 
} 

我们有3个不同的UserTypes(供应商,支持者,NormalUser (这是ApplicationUser)

public class Provider : ApplicationUser{ 
    // Provider related virtual Icollections 
} 

public class Supporter : ApplicationUser{ 
    // Supporter related virtual Icollections 
} 

现在ApplicationDbContext我想在应用程序旁边有这些DbSet s:

public virtual DbSet<Provider> Providers{get;set;} 
public virtual DbSet<Supporter> Supporters{get;set;} 

哪个DbSet<Provider>应该返回ApplicationUsers他们UserTypes等于2(例如)

+0

什么UserTypes的属性? –

+0

@ H.Herzl以及它是一个枚举'{Normal = 1,Provider = 2,Supporter = 3}' –

+0

你试过这个吗? var query = dbContext.Providers.Where(item => item.Type == UserTypes.Provider).ToList(); –

回答

1
 public class ApplicationDbContext : IdentityDbContext<ApplicationUser, IdentityRole<long>, long> 
     { 

      public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) 
       : base(options) 
      { 
      } 
      public ApplicationDbContext() 
       : base() 
      { 
      } 

      public virtual IEnumerable<Provider> Providers 
      { 
       get 
       { 
        return (IEnumerable<Provider>)Users.Where(z => z.Type == UserTypes.Provider).AsEnumerable(); 
       } 
      } 
     } 
相关问题