Update Model From Database
を実行しているときに、単一テーブルのSSDLを更新しないようにEFに指示する方法はありますか?特定のテーブルのデータベースからEF更新モデルを拒否する方法は?
少し詳細:
Dbファーストアプローチ(edmxとUpdate Model From Database)のEF 4.3を使用しています。
何らかの理由でSQL Serverにプライマリキーが設定されていないが、プライマリキーとして使用するようにEFに指示できる自動インクリメントIdentity
列を持つテーブルがあります。
EFはテーブル自体にプライマリキーが見つからないため、そのテーブルのSSDLにDefiningQueryを生成します(更新および挿入を防止します)。
私は簡単にそのDefiningQueryを削除して(そして他のEntitySet属性を変更することができます)、すべて正常に動作します。
私はもう一度Update Model From Database
を実行するときを除いて、DefiningQueryが再び戻ることを除いて。
EFにその単一テーブルのSSDLを更新しないように指示する方法はありますか?
まあ、最も簡単な**解決方法は、そのテーブルにそのIdentity列の主キーを与えることです。** ANY ** "実"テーブルには主キーが必要です。 –
これはちょっと難しいです:)実際のテーブルにはキーがあります(キーを念頭に置いてください)。これは4列のコンポジットで、そのうちのいくつかはnullableです(EFはキー内でnullを好まない)。そこで、使い易い代理キーを追加しました。しかし、dbもERPサービスによって生成され、消費され、そのIDフィールドについてはわからないので、それを主キーにすることはできません。サロゲートキーのアイデアはうまくいき、ssdl-regenerationを除いていくつかのことを単純化しました.. – Shaddix
** WHY **サロゲートカラムをプライマリキーにできませんか?プライマリキーの目的は、各行を一意に識別することです。サロゲートIDは完全にうまく実行されます。 –