Мне интересно узнать о конкретном сценарии SQL при использовании EF Core. Например, есть столбец, который позволяет null и в то же время имеет значение defalut, это необычная ситуация, но это не проблема. Вопрос о технической возможности.EF Core вставляет значение null в столбцы с нулевым значением, которое имеет значение по умолчанию
[SomeId] [uniqueidentifier] NULL DEFAULT (newsequentialid())
И в заявке есть Entity (Code First), который имеет соответствующее свойство
public Guid? SomeId { get; set; }
Проблема состоит в том, чтобы вставить эту сущность в БД, так что SomeId будет иметь нулевое значение. Потому что даже когда свойство Null, Database переопределит его значением по умолчанию.
Это можно сделать с помощью чистого sql, явно присваивая значение null столбцу, но похоже, что с EF это невозможно сделать, или я ошибаюсь?
РЕДАКТИРОВАТЬ: Для того, чтобы разработать более
public class ExampleTable
{
[Key]
int Id { get; set; }
string Name { get; set; }
Guid? SomeId { get; set; }
}
В методе семян, например:
var record1 = new ExampleTable
{
FirstName = "Carson"
}
var record2 = new ExampleTable
{
FirstName = "Carson",
SomeId = null
}
context.ExampleTableSet.Add(record1);
context.ExampleTableSet.Add(record2);
context.SaveChanges(record);
запись 1 и 2 являются одинаковыми, так как SomeId обнуляемым Guid ?, и в обоих случаях после отправки SomeId в базе данных принимает реальную ценность от newsequentialid. Есть ли способ сохранить SomeId Нуль в базе данных.
ОТВЕТ: Это не может быть сделано с помощью EF: http://stackoverflow.com/questions/41668301/override-sql-default- value-on-insert-using-entity-framework-core-7/41683417 # 41683417 – borisdj