В моей таблице Users
есть столбец с именем CreatedOn
, для которого "Значение по умолчанию или привязка" установлено на (getdate())
.В моем файле .edmx для этой модели я определил этот столбец как <Property Name="CreatedOn" Type="datetime2" Precision="7" Nullable="false" StoreGeneratedPattern="Computed"/>
.
- Преимущество: поле устанавливается как текущая временная метка при создании
- Недостаток: я не могу изменить поле с помощью Entity Framework
Я могуоднако измените определение поля в файле .edmx на StoreGeneratedPattern="None"
, что дает мне:
- Преимущество: я могу изменить поле в любое время после создания с помощью Entity Framework
- Недостаток: поле не устанавливается как текущая временная метка при создании
Проблема заключается в том, что Entity Framework, когда я задаю StoredGeneratedPattern="None"
для этого столбца в файле .edmx, вместо того, чтобы база данных установилаGETTIME () сама отправляет значение 0001-01-01 00:00:00
, которое затем перезаписывает базу данных по умолчанию.Я знаю это по записи оператора SQL, который Entity отправляет: INSERT [dbo].[Users]([LoginName], [Password], ..., [CreatedOn]) VALUES (@0, @1, ..., @7) where @7 = '0001-01-01 00:00:00' (Type = DateTime2)
.
Что мне нужно сделать, чтобы получить это:
- Преимущество: поле устанавливается как текущая временная метка при создании
- Преимущество: я могу изменить значение этого поля в любое время после создания через Entity Framework