2009-06-01 8 views
5

私はユーザーとロールの間に多対多の関係があり、ユーザーエンティティと複数のロールのインスタンスがある場合ID私は他のロールを持たずに2つのタイプのエンティティ間に関係を挿入できますか最初にロールを選択せず​​に多対多リレーションシップのエンティティはどのように挿入しますか?

更新:

私は十分に明らかにされていない可能性があります。私は役割のインスタンスを持たず、役割IDのみを持っています。最初にデータベースからRoleオブジェクトを作成せずに、ユーザーとロールの関係を作成することは可能ですか?

答えて

9

はいあなたはIDを持っていて、それらを

を関連付けるために必要がある場合は、この(擬似コード)を行うことができるはず

// how you get this doesn't matter so long as it is in the Context 
User user = ...; 
Role role = new Role {Id = 2}; 
// role 2 is in unchanged state 
ctx.AttachTo("Roles", role); 
// role 2 is unchanged + added relationship between user and role 2 
user.Roles.Add(role); 
ctx.SaveChanges(); 

ここで重要なのは、AttachToがObjectStateに実体を置くということですマネージャーは変更されていない状態です。そのエンティティを変更する必要がなく、関係構築のためにのみ使用する場合は、すべてのプロパティ値を知る必要はなく、PKで十分です。

これを添付したら、関係を構築できます。

希望これは私が役割のインスタンスを持っていない、私は唯一のロールIDを持っている

乾杯 アレックス

+0

ありがとう、私はそれを試して、それがどのように行くのかを教えてあげます。 – adam0101

+0

偉大な、それは私のために働く。ありがとう –

2

データバインディングを使用していない場合は、必ず多くのものか​​ら多くのものが、互いに参照のリストとしてマップされます。 User.Roles.Add(Role ...)は問題ありません。

+1

に役立ちます。新しい役割を作成してIDだけを指定すると機能しますか?それをデータベースに挿入しようとしていますか?うまくいけない、それはすでにそこに存在しています。 – adam0101

関連する問題