2012-05-03 23 views
3

データベースに52列のテーブルがあり、そのテーブルに行を作成する関数を作成したいとします。
私の場合、そのテーブルのすべてのカラムを使いたくないので、私はこのようなモデルを作成しました。Entity Frameworkで既定値を設定する方法

[Table("CUST_MASTER")] 
public class CustomerMaster 
{ 
    [Key] 
    [Column("CUSTOMER_ID")] 
    public string Id { get; set; } 

    [Column("CUSTOMER_NAME")] 
    public string Name { get; set; } 

    [Column("CUSTOMER_CITY")] 
    public string City { get; set; } 
} 

(など小数0.0、のために、「文字列の」)エンティティフレームワークを経由してのみ、このデータを送信し、いくつかのデフォルトのデータへの他のすべてのNULL可能でないフィールドを設定するにはどのような方法がありますすべての私のフィールドのことを記述することなくそれを手動でやっていますか?

答えて

4

モデルにテーブル列を組み込んでいないと、マップされず、生成されたすべてのSQLによって完全に無視されます。

唯一のオプションは、データベースにデフォルト値を指定することです。

+0

Eh :(Entity Frameworkのようなものがあると便利です)ありがとう –

+0

@ChuckNorris:EFはこれらの列については知らないので、どのように記入する必要がありますか?マップしたくない場合はストアドプロシージャを作成してくださいこれらの列を使用し、データを挿入するストアドプロシージャを使用します。 –

+0

私は既にストアドプロシージャの問題を解決することを考えました。 –

0

コンストラクタの値を設定すると、コードでデフォルト値が使用されますが、代わりにマイグレーションを有効にすることでデフォルト値を設定できます。 look at at this stackoverflow question

+0

これは私のモデルを再び満たす必要がありました。私はどこでもnvarcharのnullableフィールドではなく、空の文字列を設定するフィールドを記述せずに書くことはありません。 –

0

私はこれがold suggestionだと思います。これは、概念モデルと記憶モデルとの間のマッピングの欠如を明示する。しかし、非常に一般的な/理解されたアイデアではない。

更新: FWIW、thisは、Code-First以外のシナリオでは既に可能であることを示唆しています。

関連する問題