Entity Framework 5を使用してからEntity Framework 6にプロジェクトをアップグレードした後(NuGets更新機能)、生成されたエンティティクラスで次のエラーが発生します。
エラー1タイプまたは名前空間名「オブジェクト」は名前空間「System.Data」に存在しません
(アセンブリ参照が欠落していますか?)
これは、名前空間が変更されたためであり、インポートを次の場所から変更することで、手動でエラーを修正できることを理解しています:using System.Data.Objects;
およびusing System.Data.Objects.DataClasses;
宛先:using System.Data.Entity.Core.Objects;
ただし、ファイルは生成されるため、Update model from Database
。 EFにこのエラーなしでモデルを生成させるために変更する特別なものはありますか?.
問題は、エンティティとコンテキストを生成するT4テンプレートがEFバージョン5に残っていることだと思います。
まず、モデルのコードビハインドにある現在のコード生成項目、つまり<Modelname>.Context.tt
と<Modelname>.tt
を削除する必要があります。次に、Right click in the model designer-> Add Code Generation Item ... -> EF 6.x DbContext Generator
で新しいEFバージョン6コードジェネレーターを追加します。
これは、Entity Framework v5をv6に正常にアップグレードする方法に関する私の経験です:
頭字語:
チェックリスト:
using System.Data.EntityClient;
、これはEF5参照です。using System.Data.Entity.Core.EntityClient;
これはEF6に適しています。まだ立ち往生?このチェックリストはコミュニティWikiです。このチェックリストを自由に編集して、EF6構成のレンガの壁に頭をぶつけている不幸な魂を助けてください。
EFを検討する前に、他のオプションを検討してください。他のオプションよりも100倍遅く、提供するものが非常に複雑であり、エンティティGUIにはバグがいっぱいで、使い勝手に問題があります。EF6コードをすべてリッピングして、それを必要なものに置き換える必要があります。 Dapperで5秒かかるクエリを作成するのに5分未満。