Сначала я использую базу данных EF 4 + POCO.Поскольку у EF нет простого способа заявить, что входящие DateTimes имеют вид UTC, я переместил свойство из автоматически сгенерированного файла в частичный класс в другом файле.
private DateTime _createdOn;
public virtual System.DateTime CreatedOn
{
get { return _createdOn; }
set
{
_createdOn =
(value.Kind == DateTimeKind.Unspecified)
? _createdOn = DateTime.SpecifyKind(value, DateTimeKind.Utc)
: value;
}
}
Однако теперь каждый раз, когда я обновляюмодель, автоматизированные свойства создаются снова в поколении T4.Конечно, это приводит к следующей ошибке компиляции: «Тип« Foo »уже содержит определение для« CreatedOn »».
Есть ли способ сказать EF не генерировать это свойство и разрешить мне его обрабатывать намое?
Обновление
Спасибо за ответы всех ...
Я создал новое пользовательское свойство с другим именем.
public virtual System.DateTime CreatedOnUtc
{
get
{
return (CreatedOn.Kind==DateTimeKind.Unspecified)
? DateTime.SpecifyKind(CreatedOn, DateTimeKind.Utc)
: CreatedOn;
}
set
{
CreatedOn =
(value.Kind == DateTimeKind.Unspecified)
? CreatedOn = DateTime.SpecifyKind(value, DateTimeKind.Utc)
: value;
}
}
Я также установил для всех установщиков и получателей автоматически сгенерированного свойства значение Private, за исключением тех свойств, которые мне нужно было использовать в запросе Linq-to-Entities (вздох).В этих случаях я устанавливаю эти геттеры как внутренние.
Я бы очень хотел, чтобы в типах DateTime был раскрывающийся список, чтобы указать, какой "тип" DateTime должен обрабатывать EF.Это сэкономило бы часы и дополнительное осложнение.