1

CRUDアクションとEFを使用してコントローラーを追加しようとすると、次のエラーが発生します。

LetLord.Models.Tenantのメタデータを取得できません。同じDbCompiledModelを使用して、異なるタイプのデータベースに対してコンテキストを作成することはサポートされていません。代わりに、使用されているサーバーのタイプごとに個別のDbCompiledModelを作成してください。

コントローラダイアログ設定の追加:

テンプレート: EFを使用した読み取り/書き込みアクションとビューを備えたMVCコントローラー。

モデルクラス:テナント(LetLord.Models)

データコンテキストクラス: LetLordContext(LetLord.Models)

私は同様の質問/問題を見て、提供された解決策を試しましたが、それを機能させることができません。

私の接続文字列:

<connectionStrings>
<add name="LetLordContext" connectionString="Data Source=|DataDirectory|LetLord.Models.LetLordContext.sdf" providerName="System.Data.SqlServerCe.4.0" />
  </connectionStrings>

私にはLetLordContext.csデフォルトのコンストラクターがありません。私のInitializeSimpleMembershipAttribute.csクラスでは

WebSecurity.InitializeDatabaseConnection("LetLordContext", "UserProfile", "UserId", "UserName", autoCreateTables: true);

私が試したこと:

  • 別の質問の説明に従って、プロバイダー名を変更します。
  • 接続文字列を削除してコメントアウトしました。
  • EntityFrameworkを削除して再インストールします。
  • SQL ServerCE4.0がインストールされていることを確認します。
  • Subversionでプロジェクトの以前のバージョンに戻しました。

私はまだ途方に暮れているので、どんな助けでも大歓迎です。

4

2 に答える 2

4

回避策を見つけましたが、このエラーの原因はまだわかりません。

ルートweb.configファイルで変更しました

<connectionStrings>
 <add name="LetLordContext" connectionString="Data Source=|DataDirectory|LetLord.Models.LetLordContext.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

<connectionStrings>
 <add name="DefaultConnection" connectionString="Data Source=|DataDirectory|LetLord.Models.LetLordContext.sdf" providerName="System.Data.SqlServerCe.4.0" />
</connectionStrings>

これにより、スキャフォールディングを使用してビューを追加できます。追加したら、文字列を元の状態に戻します。私が知っている限り、どんな新しい文字列でもかまいません。

于 2013-01-24T14:28:50.483 に答える
0

この解決策は少し手間がかかりますが、いくつかの解決策を試した後、私は再び行動を起こさなければなりませんでした。別の名前で新しいモデルを作成し、クラスの内部を新しいモデルにコピーすることにしました。次に、[コントローラーの追加]ウィンドウで新しいモデルを選択すると、スキャフォールディングが完了しました。

次に、古いモデルを削除しました。

何が壊れているのかわかりませんが、新しいモデルは正常に機能しました。

于 2016-01-12T18:18:51.330 に答える