Можно ли запретить EntityFramework 4 перезаписывать настроенные свойства?

Я сначала использую базу данных 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;
        }
    }

Однако теперь каждый раз, когда я обновляю модель, автоматические свойства будут созданы снова в поколении Т4. Конечно, это вызывает следующую ошибку компиляции: «Тип '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 было раскрывающееся меню, чтобы указать, какой «Kind» DateTime должен рассматривать EF. Это сэкономило бы часы и сэкономило бы дополнительные сложности.

14
задан Jason 4 August 2011 в 16:47
поделиться