0

私はデータベースを最初に設計しています。モデルにデフォルト値を設定して、ユーザーが null 許容フィールドの 1 つに対してエディターのテキスト ボックスを空白のままにしておくことができるようにしたいと考えています。EF は単に null をデータベースに投入したくないようです。そのため、null 許容属性のデフォルト値を null に設定できることを望んでいました。

つまり、送信時にテキストボックスが空白のままになっている場合、属性のデータベースに null を挿入したいと考えています。

コンストラクターを部分クラスに追加して、私がやりたいことを実行できることを読みました。したがって、基本的には次のようになります。

public partial class MyClass{
    public MyClass()
    {
        field1 = null; //this would be the default value for field1
    }
}

唯一の問題は、私が取り組んでいるモデルの自動生成された部分クラスには既にコンストラクターがあるため、コンストラクターを別の (永続的な) 部分クラスに追加できないことです。データベースから edmx を更新すると上書きされるだけなので、自動生成された部分クラスを更新したくありません。

4

1 に答える 1

0

文字列のデフォルト値はすでにnullになっているはずなので、間違った道を進んでいると思います。

問題は、テキストボックスが空白であっても常にフォームポストで渡されることです。これにより、コントローラーで null 値ではなく空の文字列が発生しますあなたの最初のクラス。

代わりに、フォームがポストバックされた後にコントローラーで文字列の値を確認し、空の場合は null に設定します。

if (String.IsNullOrEmpty(formModel.MyString)) formModel.MyString = null;

または、デフォルトのモデル バインダーを作成して、モデル バインド中にフィールドの値を確認し、空の場合は設定しないようにします。

于 2012-08-28T23:20:54.300 に答える