2017-01-10 6 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 (Provider, Сторонник, NormalUser (который является ApplicationUser))

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

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

В настоящее время в ApplicationDbContext Я хочу иметь эти DbSet s у ApplicationUser:

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(); 
       } 
      } 
     } 
Смежные вопросы