Как да презапиша анотации към данни с помощта на N-Tier Entity Framework?

Имам свойство на низ, което е задължително, но трябва да създам празен низ; в момента моята [Задължително] анотация на данни повдига грешка на празен низ. Анотацията на данните, от която се нуждая, е [Required(AllowEmptyStrings = true)], но анотацията [Required] на данните е в генерирания файл на обекта, който не мога да променя. Опитах се да добавя [Required(AllowEmptyStrings = true)] към свойството на съответния файл .metadata.cs, ​​но все още получавам грешка с празен низ. Какво бихте посъветвали?


person LorenNicole    schedule 28.05.2014    source източник
comment
Трябва ли да записвате празни низове или просто да ги разрешите без записване?   -  person Gert Arnold    schedule 28.05.2014
comment
Просто трябва да им позволя, не искам да ги спасявам.   -  person LorenNicole    schedule 29.05.2014
comment
Защо не можете да промените генерирания файл? Това е просто .tt някъде.   -  person Maarten    schedule 29.05.2014
comment
След това просто използвайте DTO или прегледайте модел с различно валидиране.   -  person Gert Arnold    schedule 29.05.2014
comment
Не мога да променя генерирания файл, защото той ще бъде генериран повторно много пъти. Няма начин да модифицирате .tt файла, за да коригирате един атрибут на едно свойство, тъй като .tt файлът създава всички обекти еднакво.   -  person LorenNicole    schedule 29.05.2014
comment
Това, което правя, е да използвам DataContext.EntitySet за свързване към комбо контрола и искам да добавя празна опция за избор. Така че искам да добавя обект с празен низ за члена на дисплея към EntitySet, но това свойство е задължително и поражда грешка, въпреки че не се опитвам да го запазя.   -  person LorenNicole    schedule 29.05.2014
comment
@ChristofSenn Имате ли някакви предложения?   -  person LorenNicole    schedule 29.05.2014


Отговори (1)


Няма начин за отмяна на поясненията към данните. Виждам обаче няколко алтернативни варианта за този случай:

  1. Изключване на валидирането при изключения на обвързването на данни на WPF:

    {Binding Path=..., ValidatesOnExceptions=false}

  2. Изключете автоматичното валидиране на данни в контекст на данни, набор от обекти или ниво на обект:

    dataContext.MyEntitySet.IsValidationEnabled = невярно

  3. Променете tt файла (T4\NTierEF.EntityTT.CS.ttinclude). По-усъвършенстван сценарий би бил да се създаде персонализирано свойство за дизайнера на edmx, за да дефинира тази настройка за анотация в edmx и след това да я вземе предвид при генерирането на код.

person ChristofSenn    schedule 01.06.2014