2017-02-23 27 views
0

私はEntity Frameworkを使用して接続する古いデータベースを持っています。スキーマを変更することはできません。別の(非常に古い)アプリケーションによって使用されているためです。PKであると思われる列に独自の値を挿入できないとクラッシュします。Entity Frameworkを使用して従来のテーブルのプライマリキーを挿入する

テーブルには主キー制約が設定されていないため、IDは使用できません。それらはで、はEFデザイナーのエンティティキーに設定されています(コードファーストではありません)。セレクションは素晴らしいですが、挿入時に失敗します。なぜなら、主キーの値が何であるべきかを知ることができないからです。 StoreGeneratedPatternnone,computedidentityに設定しようとしましたが、いずれも機能しませんでした。 VS 2013

、EF 6は、私が(正直ADO.net Entity Data Modelプロジェクトが指定されていないので、チェックする方法がわからない)

+0

あなたは自分でPK値を入力する必要があります。データベースが何も生成しないので、 'DatabaseGeneratedOption'はここでは適用されません。 –

+1

この表のいずれかの列は適切な「偽の」主キーですか?つまり、ユニークな値が含まれていますか?もしそうなら、その列を主キーとしてEFを騙すことができ、その質問に答えることができます。 – Amy

+0

EFの代わりに挿入用のストアドプロシージャを使用することを検討しましたか? – HLGEM

答えて

0

ないクールな答えを、まだ仕事だと思う:あなたのデータにGUIDにIDを設定します。新しいインサート用のアクセスレイヤー。あなたが偽のPKに頼らなければならないならば、これは通常のアイデンティティよりも悪い性能にもかかわらず、少なくともPK哲学と一貫しています。

What are the best practices for using a GUID as a primary key, specifically regarding performance?

時々、あなたは古いものを動作させるために悪いことをしなければならない:あなたはデシベルに変更を加えることができない場合、彼らはスーパー役に立たないかもしれませんがここで

は、いくつかの重要なヒントです。 :/

+0

これは、レガシーソフトウェアがpk列のGUIDを見るのがうんざりになるか、またはGUIDが余分な列として挿入されている場合にnull pkが表示されるために機能しないと思います。しかし、提案をありがとう! – Zorgarath

関連する問題