質問: 私はEFモデルを構築したいデータベースを持っていますが、関係する列はサーバー上で排他的に管理されているので、データベースからの特定の列を含めたくありません。 両方の列ともDateTime(違いがある場合)で、一方の列はNULL可能で更新時のトリガーによって維持され、もう一方の列はNULL可能ではなく、表定義のデフォルト値を使用して設定されます。 Linq2Sqlの "Server Generated"オプションのようなものを探しています。しかし、私はそのような選択肢を見つけることができません。 誰もがこれを回避する方法を教えてもらえますか? 警告: 私は長年私の職場でビジネスオブジェクトモデリングを導入しようとしてきましたが、手作業でクランクを追加する必要がある追加のコードのために常に拒絶されてきました。 EFは現在、設計者とコード生成のために実行可能なソリューションと見られています。したがって、XMLを手動でクランキングすることを含むオプションはすべて、私の同僚の他の人をEFから遠ざけるだけです。そのため、デザイナーを使用してもコードを使用してもできることを探しています。 **編集:** 私がここで探しているのはどちらかであると思います... (a)ストア内の列を参照せずにEFなしでモデルを作成する方法(ssdl)。したがって、それを操作しようとは思わない(b)作成時にプロパティに対してプログラムで "StoreGeneratedPattern"属性を設定する方法ObjectContext(簡単な答えは、.ssdl内でこれを手動で操作することですが、データベースからモデルを更新したときに.csdl、.msl、および.ssdlが手動でクランクされているルートに移動できない場合は上書きされます)
回答: Entity Frameworkでこれができますか?はい;それは簡単です。 Entity Frameworkのデザイナーでこれを行うことができますか?残念ながら、それははるかに困難です。 あなたが抱えている問題は、そのカラムがあなたのEDMXのストレージスキーマ(SSDL)に存在するということです。 GUIデザイナーで列を削除しても、マッピングやストレージスキーマではなく、クライアントスキーマから列が削除されるだけです。ただし、EDMXにアクセスして削除するのは簡単です。それが済んだら、それをEDMXのクライアントスキーマ部分のマッピングから削除することもでき、エンティティフレームワークはそれがマッピングされていないと不平を言うでしょう。 問題は解決しましたね。 うーん、ダメ。 GUIデザイナを使用してデータベースからEDMXを更新すると、ストレージスキーマは破棄されて再生成されます。だからあなたのコラムは戻ってきます。私の知る限りでは、特定の列をマッピングしないようにGUIデザイナーに指示する方法はありません。そのため、GUIデザイナーで更新するたびにこれをやり直す必要があります。幸い、EDMXはXMLなので、XMLトランスフォーム、LINQ、または選択したXMLツールを使用してこれを実行できます。