1

次のようなデータベーステーブルがあります。

表: ユーザー
UserId
UserName

表: UserToOrganization
UserId
OrganizationId

表: 組織
OrganizationId
組織

私はEntity Frameworkを使用していUserToOrganizationます。テーブルは外部キーで構成されているだけなので、Entity Frameworkはこのテーブルを非表示にします。テーブルに anと anを追加して、 aUserを anに関連付けたいと思います。ただし、テーブルが非表示になっているため、Linq を使用してデータベース内のこのテーブルに行を追加するにはどうすればよいですか?OrganizationUser.UserIdOrganization.OrganizationIdUserToOrganizationUserToOrganization

ありがとうございました、

アーロン

4

3 に答える 3

1

簡単な解決策は、関係テーブルに主キーを追加することです。これにより、それが表示され、エンティティを通常どおり追加できるようになります。

TABLE: UserToOrganization
UserToOrganizationId primary key int identity(1,1), <--- Add this
UserId
OrganizationId 

デザイナー ビューで右クリックして .edmx モデルを更新することを忘れないでください ->Update Model from Database.

于 2012-07-10T22:50:33.137 に答える
0

わかりました。今考えれば当然のことのように思えます。

edmx ファイルに配置されている私の EF テーブルを次に示します (おそらく、元の質問でこれを提供する必要がありました)。とがあることに注意しUserてください。OrganizationsOrganizationUsers

表: ユーザー
UserId
UserName
ナビゲーション プロパティ
組織

表: 組織
OrganizationId
組織
のナビゲーション プロパティ
ユーザー

非表示の「UserToOrganization」FK テーブルで挿入を行う方法は次のとおりです。

ステップ 1: 外部キー テーブルの列が両方とも主キーであることを確認します。
セット 2: 挿入します。

public void AddUserToOrganization(Guid UserId, int OrganizationId)
{
    // Get the user and the organization that you want to join
    var user = _data.Users.First(x => x.UserId == UserId);
    var org = _data.Organizations.First(x => x.OrganizationID == OrganizationId);
    // Add the organization to the user
    user.Organizations.Add(org);
    // Save
    context.SaveChanges();
}

ご協力ありがとうございました、

アーロン

于 2012-07-11T16:45:02.673 に答える
0

ストアド プロシージャを作成し、ObjectContext. ComplexTypeプロシージャの入力をを表すにマップできるはずですUserToOrganization。次に、次のようなことができます。

using (var context = new MyObjectContext())
{
    context.AddUserToOrganization(...);
}
于 2012-07-10T23:04:17.327 に答える