3

私はasp.net、mvc3およびエンティティフレームワークを初めて使いました。 私はエンティティフレームワークとコードファーストでmvc3 programmを開発しようとしています。 多対多の関係を持つ2つのクラスがあります。MVC3エンティティフレームワーク多対多の追加列

「ユーザー」と呼ばれる1つのクラスと「コース」があります。

public class Course : IValidatableObject 
{ 
     [...] 
     public virtual ICollection<User> Users { get; set; } 
     [...] 
} 

public class User : IValidatableObject 
{ 
     [...] 
     public virtual ICollection<Course> Courses { get; set; } 
     [...] 
} 

これは機能します。しかし今、私はコースの登録状況を保護する追加のフィールドが必要です。 わからない簡単な方法はありますか?

私はそれをこの方法を試してみました:

public class Course : IValidatableObject 
{ 
     [...] 
     public virtual ICollection<CourseUser> CourseUsers { get; set; } 
     [...] 
} 

public class User : IValidatableObject 
{ 
     [...] 
     public virtual ICollection<CourseUser> CourseUsers { get; set; } 
     [...] 
} 

public class CourseUser 
{ 

    [Key, ForeignKey("Course"), Column(Order = 0)] 
    public int Course_ID { get; set; } 
    [Key, ForeignKey("User"), Column(Order = 1)] 
    public string User_ID { get; set; } 

    public int Status { get; set; } //{ pending, approved } 

    public virtual Course Course { get; set; } 
    public virtual User User { get; set; } 

} 

しかし、これは、関連するデータを追加したり、編集することがはるかに困難になります。 たとえば、コースを作成したユーザーをCourseUsersテーブルに自動的に追加するようには管理していませんでした。

私を助けるためのTHX

答えて

1

いいえ簡単な方法はありません。ジャンクション・テーブルに追加のフィールドを追加すると、そのフィールドにアクセスできるようにエンティティとしてマップする必要があります。純粋な多対多の関係ではありません。 2つの1対多の関係を持つ、モデル内の新しいエンティティです。

+0

答えではありません。 関連テーブルを更新する手助けをしてくれるかもしれません。 'Membership.GetUser()。ProviderUserKey.ToString()'でuser_idを取得しましたが、新しいコースの作成時に関連テーブルを更新する方法はわかりません。 www.asp.netで多くのチュートリアルを読んでいますが、少し混乱していると思います。 – Gesh

+2

これはここで動作する方法ではありません。あなたは質問をして答えを得ます。新しい質問がある場合は別の質問としてそれを聞いてください。コメントは、無関係の別の質問をするためのものではありません。 –

関連する問題