0

私はSimpleMembershipを実装しているDB First EF5プロジェクトを持っています.私はそのほとんどを機能させていますが、質問が出てきました.

Simple Membership によって作成されたメインの User テーブルには、UserName が含まれています。アプリには、このテーブル、特に userName をクエリする必要がある場所が他にもいくつかあります。シンプル メンバーシップは接続文字列で Data.EntityClient を使用しないため、SqlClient に設定しています。

そのため、プロバイダーの User テーブルを使用したエンティティ モデルがないため、クエリの方法がわかりません。通常、エンティティ モデルのインスタンスを作成して LINQ を使用しますが、試してみると、最初にコードと最初にエンティティを混在させることに関する非常に長いエラーが発生します。「initialSimpleMembershipAttribute」を変更して、Membership テーブル用に作成した別の接続文字列を指すようにしました。

私が考えた1つの解決策は、ユーザーを保存し、ユーザー名をカスタムテーブルの1つにコピーしてから、EFを介してクエリを実行することでしたが、これは、重複データのデータベースの「ベストプラクティス」に違反するようです.

私が持っていた別のアイデアは、Membership が作成したテーブル用に 2 つ目の edmx モデルを作成することですが、SimpleMembership が EntityClient を使用しない場合、エンティティ モデルを認識しないということですか?

4

1 に答える 1

0

あなたは物事を複雑にしすぎています。

独自のモデルがある場合は、デフォルトのテンプレートが提供するモデルを削除して、代わりに独自のモデルを使用できます。コードが先か、データベースが先か、それとも何でも構いません。Initialize SimpleMembershipAttribute を変更して、デフォルト モデルへの参照を削除し、InitializeDatabaseConnection 呼び出しを正しく変更してください。

WebSecurity.InitializeDatabaseConnection("YourConnection", "WhateverYouCallYourUserTable", 
    "WhateverYourUserIdIs", "WhateverYourUserNameColumnIs", autoCreateTables: true);
于 2013-05-12T05:34:10.557 に答える