0

構築したASP.NETMVC3アプリケーションがあり、2つのデータベースがあります。

1つはデフォルトのメンバーシッププロバイダーを参照しており、アプリをビルドしたときに自動的に作成されました。

SchoolContextもう1つは、SchoolContextという名前のデータベースであり、その中のすべての情報を、デフォルトメンバーシッププロバイダーのすべてのデータと同じデータベースに保存したいと思います。

これが私の2つの接続文字列です。

<add name="ApplicationServices" connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" providerName="System.Data.SqlClient" />
<add name="SchoolContext" connectionString="Data Source=|DataDirectory|School.sdf" providerName="System.Data.SqlServerCe.4.0" />

2番目の接続文字列に名前を変更ApplicationServicesSchoolContextてからコメントアウトしようとしましたが、デフォルトのメンバーシッププロバイダーを使用してロードして「ログイン」できますが、元の文字列内に保存されている情報をデータベースにキューイングする必要がある場合は常にSchoolContextエラーが発生しますモデルが存在しないことなどを示します。。また、データは、デフォルトのメンバーシッププロバイダーからの情報を含むデータベース内に構築されていません。

モデルが変更された場合、初期化子を使用してデータベースを再構築しています。

public class SchoolInitializer : DropCreateDatabaseIfModelChanges<SchoolContext>

そして、これは、モデルで何かを編集し、2つのデータベーススキームを使用しているときはいつでも正常に機能します。ただし、2つのデータベースを1つに結合したい場合は機能しません。

私がやろうとしていることが機能していないため、2つのデータベースを接続する方法がわからないようですSchoolContextが、デフォルトのメンバーシッププロバイダーに必要な情報と同じデータベースに自分を配置するようにmvcを適切に設定するにはどうすればよいですか?

4

1 に答える 1

2

2つの潜在的な答え:

  1. 私があなたの意図を理解しているなら、あなたは2つの別々のDBコンテキストを使用し、それらの両方を結合するクエリを実行しようとしています。これは、将来検討される可能性がありますが、Entity Framework(この記事の執筆時点)では不可能です。詳細については、この投稿を参照してください: https ://stackoverflow.com/a/8536400/941058

    情報を結合する必要がある場合は、LINQを使用してメモリ内で結合する必要があります。基本的に、外部キー情報をいずれかのデータベースに保存し、どちらか一方にクエリを実行するときにそれを参照する必要があります。

  2. クロスコンテキスト参加を試みているのではなく、EFでデフォルトメンバーシッププロバイダーを使用したい場合は、次のことを検討してください:http: //efmembership.codeplex.com/

于 2012-06-12T17:54:33.603 に答える