Значение по умолчанию базы данных не вставляется при создании записи Entity framework
у меня есть таблица LoginRecord в sqlserver 2008 со следующей структурой столбцов -
LoginId - int, identity
UserId - int
LoginDateTime- Allow nulls false,default value getdate()
я вставляю новую запись entity framework 6, как показано ниже -
db.LoginRecords.Add(new LoginRecord() { UserId = UserId });
db.SaveChanges();
но в таблице LoginDateTime вставляется значение null. Это должно быть текущее время.
Я использую первый подход к базе данных.
Как можно преодолеть эту проблему?
3 ответов
объединил мои два комментария в ответ.
попробуйте установить атрибут "StoredGeneratedPattern" вашего datetime в файле EDMX в Computed. Из следующего потока:http://www.stackoverflow.com/a/4688135/2488939
для этого перейдите в конструктор файлов edmx, щелкнув файл edmx. Затем найдите таблицу и свойство. Щелкните правой кнопкой мыши столбец в таблице, который вы хотите изменить, и выберите Свойства. Окно Свойства должно затем придумайте и вы увидите как одно из свойств "StoredGeneratedPattern". Измените это на computed.
в дополнение к изменению файла EDMX, как предложил Вишварам Махарадж, вы должны сделать определение соответствия таблицы между EF и DB. Описание таблицы "LoginDateTime -" разрешить значения null "ложь" - это сама ложь. Поле явно разрешает NULLs, если NULLs вставляются. Измените столбец, чтобы не разрешать NULL, если он действительно не должен иметь нулевых значений:
ALTER TABLE LoginRecords ALTER COLUMN LoginDateTime DATETIME NOT NULL;
установка значений по умолчанию в Entity Framework 5 и 6 путем изменения файла шаблона T4 Сделано ниже изменений .tt (файл шаблона) Образец: красный означает удалить и зеленый означает добавить Это добавит конструктор во все классы сущностей с OnCreated методом.
ниже
public partial class Category
{
public Category()
{
this.Products = new HashSet<Product>();
OnCreated();
}
partial void OnCreated();
public int Id { get; set; }
public string Name { get; set; }
public virtual ICollection<Product> Products { get; set; }
}
затем создайте файл класса, используя то же пространство имен, что сущностей.
public partial class Category
{
partial void OnCreated()
{
Name = "abc"
}
}
см. этот https://www.youtube.com/watch?v=i8J2ipImMuU
Helpfull