2017-01-05 2 views
3

私はEF 6を使用しています。自分のクラスをedmxモデルクラスとして使用するにはどうしたらいいですか?

私は独自のドメインクラスをedmxモデルクラスとして使用したいので、tt生成モデルクラスを削除し、edmx build actionをNoneに変更しました。

私は選択を実行しようとすると、私はではなく、自分のクラスと、生成されたTTモデルクラスで完璧に動作

MetadataException

DbContext context = new DbContext("name=BaseObjectsEntities"); 
var u = context.Set<User>().Where(x => x.Id == 1).FirstOrDefault(); 
を取得します。

私のクラスをedmxとリンクするにはどうすればよいですか?

ps:私のクラスはすでにクラスとプロパティの名前がedmxのものと同じです。私は私の問題を解決し

+0

'生成されたttモデルクラスでは動作しますが、自分のクラスでは動作しません。覚えておいてください、私たちはあなたのコンピュータのモニターを見ることができないので**何が起こっているのかについての説明と、それが期待された振る舞いとはどのように異なるのでしょうか? – Igor

+0

私はTTクラスを削除してから、オブジェクト を変更いけない場合: - にcontext.Set : - それは動作しますcontext.Set が、私は、生成されたを削除し、自分自身を使用する必要がありますクラス。 –

+0

デザイナーの代わりに、またはT4テンプレートを使用して、クラスを定義してマッピングするコードを最初に実行することを検討しましたか? – Igor

答えて

2

これらは私がやった手順は以下のとおりです。

  • あなたはまだない

    独自ドメインクラスを作成している場合は、

  • 今、あなたはEDMXの作成を確定する場合、Visual StudioがでEDMX開き、慎重に耳を傾けEDMX

    を作成したテーブル

  • を作成するデータベース

    を作成します。デザインモード、保存しないで閉じないでください。何もしないで、エンティティモデルの名前とその名前を変更します(モデルを表すダイアグラムブロック内の)プロパティ、エンティティの名前とそのプロパティがdomainで指定されていることを確認してください。

保存したり、あなたがこれを行うとあれば、あなたのドメインクラスは、彼らがemdxがあるときに生成される.ttクラスによってoverwrittedされる同じプロジェクトであり、まだデザインウィンドウを閉じないでください

作成した。

削除すべての.ttファイルは、emdxに集約されて保存されません。今

  • EDMXで右クリック>プロパティ

"カスタムツール" でwritted、あなたがwrittedテキストを削除すると、ビルドアクションがEntityDeploy

であることを確認しているものは何でも消去カスタムツールでEnterをクリックして、ソリューションをビルドします

今すぐwiうまくいく。

  • 私は、これらの手順が動作しない場合は、秘密のステップがあることを言及するのを忘れてしまった:

は、Visual Studioのから、プロジェクトフォルダからプロジェクトを削除するには、それを再作成し、初期の再起動ステップ。

+0

Microsoft Konami Code ???ホリーゴッド!わたしにはできる! –

関連する問題