2016-12-31 2 views
0

Ich benutze ASP.net Identity 2.2 und ich möchte meine Benutzer (abfragbar) mit einer anderen Entität. mein DB Kontext ist wie folgt:Verwenden Sie abfragbare Owin Benutzer von UserManager und Join mit einer anderen Entität

public class ApplicationDbContext:IdentityDbContext<ApplicationUser> 
    { 

     public ApplicationDbContext() 
      :base("DefaultConnection",throwIfV1Schema:false) 
     { 
      Configuration.ProxyCreationEnabled = false; 
      Configuration.LazyLoadingEnabled = false; 
     } 

     public DbSet<Class> Class{ get; set; } 

     public static ApplicationDbContext Create() 
     { 
      return new ApplicationDbContext(); 
     } 
    } 

ich Base haben, die so etwas wie dieses:

public class BaseApiController : ApiController 
{ 
    protected ApplicationUserManager AppUserManager 
      { 
       get 
       { 
        return _appUserManager ?? Request.GetOwinContext().GetUserManager<ApplicationUserManager>(); 
       } 
      } 
} 

ich meine Nutzer als abfragbar wie dies in meinem Controller

var users = AppUserManager.Users 

bekommen Aber wenn ich meinen Tabellen zu diesen Benutzern beitreten möchte, bekomme ich folgenden Fehler.

Ich mache meine dbContext neue im Konstruktor meiner Api.

Ich habe eine kleine App und ich möchte nicht mit DI Containers gehen.

Der angegebene LINQ Ausdruck enthält Verweise auf Abfragen, die mit unterschiedlichen Kontexten zugeordnet sind

was ist der richtige Weg, um Benutzer mit einem anderen Tisch zu verbinden?

Antwort

0

Zum Beispiel, wenn Sie teilnehmen möchten User mit Class:

var applicationDbContext = HttpContext.GetOwinContext().Get<ApplicationDbContext>(); 
var query = from user in applicationDbContext.Users 
      join class in ApplicationDbContext.Class on user.Id equals class.UserId 
      select new { user, class }; 
+0

oh das so einfach war, ich war nicht klar, ich Benutzer in meinem DbContext haben. Danke, –

Verwandte Themen