2

私はもともと .NET4 で VS2010 Express を使用して作成した大規模な MVVM タイプのソリューションを持っています。モデルは、エンティティを使用して SQL Server 2012 データベースにアクセスします。

最近、Model プロジェクトを失くしてしまいましたが、これは大したことではありませんでした。これは、いくつかのマイナーな変更を加えた自動生成エンティティで構成されているためです。したがって、VS2012 と .NET4.5 および EF5 を使用してモデル プロジェクトを再作成しました。ViewModel を .NET4.5 にアップグレードし、パッケージ マネージャーを使用して EntityFramework をインポートしました。

問題は、ViewModel (別のクラス ライブラリ) がいくつかのコンパイル時エラーをスローすることです。これらは次のように展開します。

  1. メインの Entities クラス (私の場合は CN2Entities) には、接続文字列を受け取るコンストラクターがなくなりました。これは、パラメーターなしのコンストラクターのみを提供するオートコンプリートによって確認されます。
  2. 「アドレス」など、データベース テーブルにマップされる個々のデータベース オブジェクト クラスには、静的メンバーが含まれなくなりました。例えば:

    address_ = Address.CreateAddress(-1);

このコードは、入力してデータベースに追加するための、きれいな空の住所レコードを提供していました。これはもはや有効ではありません。実際、Address クラスの唯一の静的メンバーは、"Equals" と "ReferenceEquals" のように見えます。

  1. メインの Entities クラスには、AddToAddress(Address) 関数が含まれなくなりました。この関数は、新しい Address オブジェクト (Addresses テーブルの行を表す) を取得してデータベースに追加します。次に、Entities.SaveChanges() を呼び出して、追加をコミットします。この機能はまだ残っているようです。

何が起こっているのか誰でも私を助けてもらえますか? これは EF5 が動作する新しい方法と関係がありますか、それとも正しい参照を提供していない破損したソリューションがありますか?

4

1 に答える 1

3

Entity Framework 5を使用したモデルプロジェクトを完全に異なるAPI(および異なる自動生成戦略)で再作成したのはなぜですか。EF 4.1以降のEFには2つのAPIがありますが、VS 2010では2番目のAPI(DbContext API)はオプションであり、個別のアセンブリを参照した後にのみ使用可能になりました。VS 2012では、EDMXを追加するときにDbContext APIがデフォルトとして想定されています(VSはその追加のアセンブリをNuGetからダウンロードします)。

古いAPIを引き続き使用できます-ソリューションエクスプローラーでEDMXファイルを展開し、拡張子が.ttのすべてのファイルを削除します。その後、EDMXダイアグラムを開き、プロパティで[コード生成戦略]を[なし]から[デフォルト]に変更して、ダイアグラムを保存します。古いAPIのクラスを生成するはずですが、コードジェネレーターがVS2010で使用されていたものと同じかどうかはわかりません。

于 2012-10-02T21:21:59.513 に答える