Если вы установили StoreGeneratedPattern="Computed"
в конструкторе, он включается только в концептуальную модель (CSDL).Но вам также нужно это в модели хранения (SSDL).Если вы этого не сделаете, EF сгенерирует инструкцию INSERT, которая будет содержать текущее значение даты, равное DataTime.MinValue
.Модель хранилища не может быть отредактирована из конструктора.Вы должны открыть файл EDMX в формате XML и вручную обновить определение строки.
Окончательное определение должно выглядеть следующим образом:
<edmx:Edmx ...>
<edmx:Runtime>
<edmx:StorageModels>
<Schema ...>
<EntityContainer Name="...">
<EntitySet Name="Categories" EntityType="...Categories" store:Type="Tables" Schema="dbo" />
...
</EntityContainer>
<EntityType Name="Categories"/>
...
<!-- Here you must add StoreGeneratedPattern -->
<Property Name="CreationDate" Type="datetime" Nullable="false" StoreGeneratedPattern="Computed" />
</EntityType>
</Schema>
</edmx:StorageModels>
...
</edmx:Runtime>
</edmx:Edmx>
Но у этого решения есть одна большая проблема.После того, как вы вручную измените часть SSDL, вы не должны использовать «Обновление из базы данных», иначе вам придется выполнять это изменение после каждого вызова «Обновление из базы данных».Причина в том, что «Обновление из базы данных» удаляет текущую часть SSDL EDMX и создает новую на основе текущей структуры БД.