2017-01-16 5 views
2

エンティティフレームワークでは、既定値の制約機能が達成されていません。自分で試した後、hereについて読んでいます。だから、これを得るための最良の方法は何かを知りたい。ストアドプロシージャを使用するか、そのようなトリガを使用する必要がありますか?そして、コードで明示的に処理したくないので、Entity Frameworkに新しい機能や新しい機能が追加されました。 これは大きな助けになるでしょう。エンティティフレームワークと既定値

+0

で解決しているようです。それはあなたが避けたかったものだとわかっていますが、うまくいきます。 –

+0

私のシナリオでは、私のエンティティフレームワークはより頻繁に更新され、私は通常これらの生成されたコードファイルに変更を加えることを避けるためにいくつかのテーブルを持っています。 –

+0

エンティティpocosをどのように生成しているのか分かりません(上記のコメントに基づいてデータベースを作成しているように聞こえます)。しかし、ほとんどのツールでエンティティの部分クラスを作成するオプションがあります。次に、エンティティのインスタンス化時に実行する必要があるカスタムロジックを実行するための部分クラスを作成できます。 Simon Hughesさんが作成したものです。https://marketplace.visualstudio.com/items?itemName=SimonHughes.EntityFrameworkReversePOCOGenerator –

答えて

3

データベースファーストアプローチでは、エンティティフレームワークはデフォルト値の制約を無視します。ただし、Entity Frameworkでは、列のDefault Valueプロパティが表示されます。Model.edmxビューアでは、エンティティを選択して列>プロパティ>既定値に移動します。列のデフォルト値を追加します。それだけです。

私の場合、私はコードでModel.edmxファイルを更新しました。コードはDbからデフォルトの制約を取得し、Model.edmxファイルの概念モデルを更新します。これは、デフォルト値の列が多数あるためです。

デフォルト値の制約の問題はEF6までEntity Frameworkのすべてのバージョンで解消されないと、私はいつもちょうどエンティティの初期化にデフォルト値を入れているEntity Frameworkの7

+0

あなたは研究をしたようです。いいぞ。 –

+0

@Wasim、あなたは "Model.edmxファイルをコードで更新する"と言った。どのようにそれを達成しましたか? – Thomas

+0

@Thomas、私のケースではデータベースはコードスクリプトを書くのに十分な大きさではなかったので、私は手動でそれをやった。 –

0

回避策として、DBトリガーを使用して列の値をデフォルトに更新できると思います。

+0

ありがとう@Behzad、私はあなたの提案を感謝します。 –

+0

私はコード側から解決策を得ることができない場合、私は間違いなくこのオプションに行くでしょう。 –

3

最も簡単な方法は、C#からプロパティを初期化して、デフォルト値を確保することです。

データベースの場合、デザイナーはSQLの既定値を無視し、列をComputedとして扱うように指示する必要があります。エンティティの選択 - >列のプロパティ - > StoreGeneratedPatternをComputedに設定します(デフォルトはNone)

+0

私はそれを試して、それが動作しています。ありがとう! –

+0

テーブルの数が多い場合に便利なので、このプロパティをすべての列に設定する方法はありますか? –

+0

@ user7369792 - チェック[この質問](http://stackoverflow.com/questions/12691854/setting-default-value-in-entity-framework-database-first) – Alexei

関連する問題