0

私はイライラする問題に出くわしました。私は MVC 4 の「インターネット アプリケーション」を持っています。これは正常に動作しています。MSSQL データベースに対して単純なメンバーシップを使用しています。

しかし、「ADO.NET エンティティ データ モデル」を追加すると、ページが読み込まれなくなります。

「.NET 4 の EF4.3.1 - 複数の CLR 型が EDM 型と一致するため、CLR 型から EDM 型へのマッピングがあいまいです」というエラーが表示されます。

さて、私はそれをグーグルで調べました.2つのクラスが同じ名前を持つことはできないと言われています. わかりましたが、同じ名前のクラスが 2 つありません。

例外をさらに詳しく調べたところ、新しい CLR-Type: UserProfile が見つかったと言われていることがわかりました。うーん、単純なメンバーシップが最初に追加したものです。

そこで、クラス名を UserProfile から -> UserProfileDB に変更しました。これで、ページを開始できます。ログインすることもできます..しかし、次のような通常のクエリを実行すると:

 garView.CustomerList = (List<Models.Databasen.t_customers>)
                       (from x in db.t_customers
                        from y in db.t_customer_guarantee
                        where x.id_kund == y.kundid_garanti
                        select x).ToList();  

失敗し、UserProfile が見つからないため、関係が間違っていることがわかります。完全なリファクタリングを行いました Visual Studio がそれを行いました。

誰かがここで何が悪いのか教えてもらえますか?

4

1 に答える 1

0

さて、私は私の問題を解決しました!

  1. 現在のエンティティモデルに接続されているすべての参照/ファイル/フォルダーを削除します。
  2. 「空のプロジェクト」を作成します。好きな名前を付けます。私は DatabaseProject という名前を付けました
  3. ADO.NET Entity Data モデルを追加する
  4. ウィザードの最後に、エンティティ接続文字列を覚えているもの(EntityDB)に名前を付けます。
  5. メインプロジェクトを右クリックして、「参照の追加」を選択し、新しいプロジェクトをポイントします
  6. 「新しい」プロジェクト(DatabaseProject)のapp.configに移動し、(EntityDB)接続文字列または名前を付けたものをコピーして、他の接続文字列と一緒にweb.configに貼り付けます
  7. これを理解するのに数分かかりました....今プロジェクトをビルドすると失敗します...両方のプロジェクトのメタデータファイルが失われますか?! 新しいプロジェクト(DatabaseProject)を右クリックして、 --> properties を選択

    します。アプリケーション タブが、私の最初から見ているものであることを確認してください。そうでない場合は、左上のタブを選択してください。次に、 output type を見てください。空のプロジェクトのデフォルトは「ConsoleApplication」であり、失敗したのも不思議ではありません。--> クラス ライブラリ を選択します。F5を押して、どうぞ!
于 2013-06-09T09:49:29.060 に答える