2016-04-19 2 views
0

Существует таблица сторонних приложений, которая позволяет Nulls для нескольких столбцов varchar. Однако, если в этих столбцах хранится нуль, приложение аварийно завершает работу. Я не могу вносить никаких изменений ни в приложение, ни в базу данных.Сохраните пустую строку вместо Null в базе данных SQL Server, используя Entity Framework

Чтобы сделать ситуацию немного более сложной, модели уже созданы с использованием конструктора, и у меня есть только доступ к скомпилированной dll, в которой есть все модели компании.

Я создал страницу ASP.NET MVC, которая обновляет таблицу, однако, если столбец оставлен пустым, в базу данных добавляется нуль.

Есть ли способ убедиться, что если текстовое поле осталось пустым, пустая строка хранится в базе данных вместо нуля?

ответ

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