2

標準のメンバーシップ プロバイダーと共に、asp.net mvc アプリケーションにエンティティ フレームワーク コード ファースト アプローチを使用したいと考えています。登録されたユーザーには、users テーブルの userid を介してユーザーにリンクされる投稿などが含まれます。ユーザーを指す投稿やその他のオブジェクトをPOCOクラスにしたい(efクラスから継承しない)。しかし、メンバーシップ テーブルはコード ファーストではないので、これを設定する最善の方法は何でしょうか?

編集: http://codefirstmembership.codeplex.com/を見つけました。私が気に入らないのは、私自身のオブジェクト (ブログ投稿など) も、それらが構築したメンバーシップ データコンテキストに含まれている必要があるということです。自分のオブジェクト用に別のデータコンテキストを作成して、物事をきちんと分離して維持できるようにしたいのですが、異なるデータコンテキスト間の通信を容易にするためのオプションが EF にないようです。

4

1 に答える 1

2

残念ながら、これに対する簡単な解決策はありません。メンバーシップをスタンドアロンデータベースとして残し、メンバーシップオブジェクトのEFエンティティの生成などの深い統合は試みません。

簡単な解決策として、EFモデル内にユーザーエンティティを作成し、標準のASP.NETユーザーにいくつかの追加のプロパティ(アドレスなど)を追加しました(もちろん、これにはプロファイルを使用できますが、パフォーマンスが大幅に低下する可能性があります)。次に、ASP.NETユーザーを指すEFユーザーオブジェクトに外部キーを設定します。

次に、ASP.NETメンバーシップによって追跡されるプロパティのプロパティを計算しました(つまり、EFユーザーオブジェクトは、データの重複を避けるために、電子メールなどのプロパティをASP.NETメンバーシッププロバイダーに照会します)。

ここに記載されているように、MicrosoftがASP.NETメンバーシップスキーマを変更した場合、コードが破損する可能性があるため、これは理想的なソリューションではないことに注意してください。

于 2012-07-14T23:30:29.043 に答える