2017-01-31 2 views
1

Мне интересно узнать о конкретном сценарии 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 Нуль в базе данных.

+0

ОТВЕТ: Это не может быть сделано с помощью EF: http://stackoverflow.com/questions/41668301/override-sql-default- value-on-insert-using-entity-framework-core-7/41683417 # 41683417 – borisdj

ответ

0

Я не уверен, полностью ли я понял вопрос, но, изменив объявление, вы можете установить значение по умолчанию. О создании записи, 'SomeId' будет по умолчанию NULL

public class ExampleTable 
    { 
     public ExampleTable() 
     { 
      SomeId = null; 
     } 

     public Guid? SomeId { get; set; } 
    } 
+0

Я добавил дополнительную информацию к вопросу. – borisdj

+0

Я имел в виду значение в базе данных, которое не остается Null. – borisdj

Смежные вопросы