2016-07-24 68 views
1

我創建了一個簡單的登錄表,沒有簡單的成員,因爲在我的項目中我不需要有一個註冊表,用戶需要在數據庫中自動創建。 (按照this tutorial製作)。 我有一個模型登錄:獲取當前用戶登錄自定義身份驗證MVC 4

public class Login 
    { 
     public virtual int UserId { get; set; } 

     public virtual string Username { get; set; } 
     public virtual string Password { get; set; } 

     public virtual List<Enrollment> Enrollments { get; set; } 
    } 

及在校學生:

public class Enrollment 
    { 
     public virtual int EnrollmentId { get; set; } 
     public virtual string Name { get; set; } 
     public virtual List<Login> Users { get; set; } 

    } 

,我已經因爲很多一對多關係的表Enrollment_Login。 我需要創建一個視圖,其中顯示用戶登錄的註冊列表是「註冊」的。 我有這個疑問:

var query= from name in db.Enrollments 
      where name.Logins.Any(c=>c.LoginId==??) 
      select name; 

如果該查詢是正確的,我怎麼能獲取當前用戶登錄?

回答

0

你不能得到LoginId(我認爲這是你的Login實體的Enrollement實體外鍵)

當用戶通過驗證的存儲用戶的名稱this.User.Identity.Name如果你是你的行動方法。

您的情況的名稱是Login實體中的UserName屬性。

所以你必須寫下面的代碼:

var currentLogin = db.Logins.Single(u => u.UserName = this.User.Identity.Name); 
var query= from name in db.Enrollments 
     where name.Logins.Any(c=>c.LoginId==currentLogin.Id) 
     select name; 

或者在一個查詢:

var query= from enrollement in db.Enrollments 
     join login in db.Logins on enrollement.LoginId equals login.UserId 
     where login.UserName == this.User.Identity.Name 
     select enrollement; 
相關問題