2016-04-19 30 views
0

いくつかのvarchar列に対してNullを許可するサードパーティのアプリケーションテーブルがあります。ただし、これらの列にNULLが格納されていると、アプリケーションがクラッシュします。私はアプリケーションやデータベースに変更を加えることはできません。Entity Frameworkを使用してSQL ServerデータベースにNULLの代わりに空の文字列を格納します。

問題をもっと複雑にするために、モデルはデザイナーを使用して既に作成されており、すべての会社のモデルを持つコンパイル済みのdllにしかアクセスできません。

テーブルを更新するASP.NET MVCページを作成しましたが、空白のままにするとデータベースにNULLが挿入されます。

テキストボックスを空白のままにすると空の文字列がnullではなくデータベースに格納されることを確認する方法はありますか?

答えて

5

モデル内のプロパティにこれを追加します。例えば

[DisplayFormat(ConvertEmptyStringToNull = false)] 

を:

[DisplayFormat(ConvertEmptyStringToNull = false)] 
public string ValToBeNotNullInDb {get;set;} 

https://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.displayformatattribute.convertemptystringtonull(v=vs.110).aspx

+0

事項は少しより多くのモデルがすでにデザイナーを使用して作成されている複雑にするには私はすべての会社のモデルを持っているコンパイルされたDLLにしかアクセスできない。元のモデルをオーバーライドするモデルを作成して使用すると、これが機能すると思いますか?それを動作させる方法がわかりません。 – DonO

+0

はい、これらのオブジェクトを取り込むカスタムモデルを作成できるはずです。部分的なクラスがこれには完璧です:https://msdn.microsoft.com/en-us/library/wa80x488.aspx、http://stackoverflow.com/questions/20960513/asp-net-mvc-4-entity -framework-database-first-override-model-property-type – ironman

+0

部分的には、これらのプロパティを別の名前で宣言する必要があります。私はそれを試して、それがどのように進むのか教えてくれます。 – DonO

関連する問題