2016-07-24 6 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

あなたが取得することはできません(私はEnrollementエンティティであなたのLoginエンティティの外部キーがあると思います)LoginIdあなたがしている場合、ユーザはthis.User.Identity.Nameに、そのユーザーの名前が格納されていると認証され

あなたの行動方法。

あなたのケースの名前はエンティティの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; 

または1つのクエリで:

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; 
関連する問題