2016-08-17 2 views
0

Я установил deafaultValue миграцииКак я могу сказать, EF6 не вставить NULL значение

AlterColumn("Users", "NotNullValue", c => c.String(nullable: false, defaultValue: "Work it!")); 

затем я пытаюсь добавить новый объект, и SqlProfiler показать мне запрос

INSERT [dbo].[WowTable]([NotNullValue],[OnceMoreValue]) VALUES (NULL, 'val') 

что кинуть «не может вставить значение null в колонку «

- это любой способ прекратить вставку и обновление свойства при его нулевом значении?

UPD: класс Домен:

public class User 
{ 
    public string NotNullValue { get; set; } 
    public int Id { get; set; } 
    public string OnceMoreValue { get; set; }   
} 

метод Update:

public Task AddOrUpdate<TEntity>(TEntity entity) where TEntity : class, IEntity 
    { 
     _dbContext.Set<TEntity>().AddOrUpdate(x => x.Id, entity); 
     return _dbContext.SaveChangesAsync(); 
    } 

призвание:

AddOrUpdate(new User{OnceMoreValue = "val"}); 
+0

Посмотрите на [это] (http://stackoverflow.com/ д/7822316/861716). Вы не можете сделать строку не-nullable. –

ответ

0

Вы можете проверить модель, используя [обязательно] атрибут для NotNullValue собственности :

public class User 
{ 
[Required] 
public string NotNullValue { get; set; } 
public int Id { get; set; } 
public string OnceMoreValue { get; set; }   
} 

Ref: https://msdn.microsoft.com/en-in/data/gg193959.aspx

Или от того, что я вижу в вашей миграции сценарий, у вас есть значение по умолчанию для этого свойства ("Work It"). Таким образом, в конструкторе класса пользователей, вы можете установить NotNullvalue = «Work It», так что это значение по умолчанию будет сохранен в том случае, вы упомянули:

AddOrUpdate(new User{OnceMoreValue = "val"}); 
Смежные вопросы