2009-09-03 17 views
0

基本形式にするために、私のデータベーステーブルでは、varcharsのNULLを許可しません。空白が必要です。私のモデルはnullを許さないので、フォームフィールドを空のままにしておくとレコードを挿入しません。空のフォームフィールドが表示されたら、代わりに空白のデフォルト値を使用します。私は運がなくて、次の、例えば、試してみた:LINQモデリングのデフォルト値

[Column] 
[DisplayName("WMD Company")] 
[DefaultValue(" ")] 
public string WMDCompany { get; set; } 

はだからではなく、私のコントローラのアクションに私は次のようなチェックを行う必要があります:

に平野厄介である
if(myModel.WMDCompany == null) myModel.WMDCompany = " "; 

私。 [DefaultValue(" ")]を動作させる方法はありますか? NULLのプレースホルダは、私にとって非常にあいまいな方法のように思えるようにスペースを挿入

乾杯

答えて

1

。 LINQ to SQLは残念なことにDBのデフォルトをサポートしていません。このプロパティは、私が覚えていればAPI拡張での使用を意図していますが、それを使用するものはわかりません。

これを回避するには2つの方法があります。

まず、プロパティを適切に制御してnullに設定してデータレイヤを更新します。部分クラスを使用してデータクラスを拡張し、OnCreated()部分メソッドを実装し、この値にString.Emptyを設定します。

partial void OnCreated() 
{ 
    MyProp = String.Empty; 
} 

第二に、あなたはNULLを許可するために、あなたのDBML表現を変更することができますが、あなたのデータベースに、空の文字列にNULLを変換するためにトリガを使用します。

私は最初のアプローチで自分自身を行くだろう - 私は問題で選択肢がないエイドリアン

+0

私はこれの外観が好きです、私は明日それでbashを持っています。 – Kezzer

0

。なぜNULL値を許可するようにテーブルのデザインを変更しないのですか?

private string wmdCompany; 

public string WMDCompany 
{ 
    get 
    { 
     if (this.wmdCompany == null) 
     { 
      return string.Empty; 
     } 
     return this.wmdCompany; 
    } 
    set 
    { 
     this.wmdCompany = value; 
    } 
} 
+0

により示唆されるようにあなただけのNULLを使用することはできませんと仮定すると、それは私までだったら、私はNULLを許可したいです。 – Kezzer

1

のDefaultValue属性が使用されていません。このような何かについてどう

関連する問題