Tło:własności RIA/EF4 Podmiot mapowane do not null nvarchar - pusty ciąg
- Entity Framework 4
- usługi Silverlight 4
- RIA
- MSSQL Server 2008
Mam obiekt, który ma właściwość String o nazwie Opis.
W bazie danych mapuje się do NOT NULL NVARCHAR(200)
.
Problem:
Kiedy próbuję wstawić nowy wiersz tego podmiotu, to co mam zrobić:
MyExampleEntity entity = new MyExampleEntity()
{
Name = "example",
Description = "" // NOTE THIS LINE!
};
DatabaseContext db = new DatabaseContext();
db.MyExampleEntities.Add(entity);
db.SubmitChanges();
To jednak powoduje wyjątek mówiący "The Description field is required."
Pytanie:
Nie powinien "pusty" ciąg "po prostu to - ciąg znaków zero znaków?
wierzę tylko Description = null
należy traktować jako zapewnienie żadnej wartości.
- Dlaczego mój ciąg ma wartość (chociaż ma długość 0), co oznacza, że pominąłem wartość?
- Na jakim poziomie odbywa się ta konwersja? Na RIA, na EF lub w MSSQL?
- Czy istnieje sposób, aby opis miał zerową wartość po ustawieniu
Description to ""
i spowodować wyjątek, gdyDescription = null
(bez wartości)?
To działa, dzięki. –
Należy zauważyć, że atrybut "[Wymagany]" może kolidować z regułami FluentValidation, jeśli ich używasz, ponieważ mogą one również dodawać atrybuty i można mieć tylko jedno wystąpienie atrybutu na raz ([http: // stackoverflow.com/a/5552237/1454265](http://stackoverflow.com/a/5552237/1454265)). Udało mi się obejść to i zezwolić na puste ciągi, upuszczając atrybut "[Wymagany]" z klasy MetadataType i dodając regułę warunkową do walidacji: 'RuleFor (x => x.Field) .Etc (...) .When (x =>! String.IsNullOrWhitespace (x.Field); ' – user1454265