Как использовать стандартную Entity Framework и значения даты по умолчанию

c# entity-framework

Вопрос

В моей схеме базы данных SQL Server у меня есть таблица данных с полем даты, которое содержит значение по умолчанию

CONVERT(VARCHAR(10), GETDATE(), 111)

который идеально подходит для автоматической вставки даты в новую запись при ручном вводе записей в базу данных.

Проблема у меня заключается в том, что при использовании Entity Framework и отображении поля Date, Entity Framework вставляет значение по умолчанию DateTime.Min, когда создается экземпляр объекта.

Я не могу сопоставить поле Date с обнуляемым DateTime, т. Е. DateTime ?, и при этом я не могу использовать либо CONVERT, либо DateTime.Now.Today в значении по умолчанию Entity Designer, поскольку оно принимает только жестко закодированные постоянные значения.

Конечно, я могу явно установить поле DateTime в C # всякий раз, когда объект создается, явно в коде, в конструкторе частичного класса или даже во время события сохранения изменений.

Существуют ли другие способы достижения того, чего я хочу, когда вместо этого используется вычисление значений по умолчанию, хранящееся в таблице базы данных?

Принятый ответ

Я просто столкнулся с этим - я обошел его, установив дату (поле, которое мне нужно было сгенерировать автоматически) в конструкторе Entity, используя частичный метод. Является ли это идеальным или работает ли он во всех случаях, еще неизвестно, но это уже решило мою проблему.


Популярные ответы

Создайте частичный класс для вашего EntityObject, добавьте конструктор по умолчанию и установите в нем значения по умолчанию.

    public partial class YourDBObject
    {
          public YourDBObject()
          {
               this._DateField = DateTime.Now;
          }
    }


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему