2013-08-22 3 views
1

У меня есть объект домена, который имеетНевозможно вставить значение NULL в столбец BLAH столбца BLAH не допускает нулей. ВСТАВИТЬ терпит неудачу

[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 

набор на Id собственности, но EF все еще пытается ввести нулевое значение при попытке сохранить его. Это общая проблема? Это пример того, как он выглядит.

public class Invoice 
{ 
    [Key] 
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] 
    public int Id { get; set; } 
    public ShippingInformation ShippingInformation{ get; set; } 
    public BillingInformation BillingInformation { get; set; } 
    public decimal Subtotal { get; set; } 
    public User user { get; set; } 
    public bool Processed { get; set; } 
} 
+0

этот код Во-первых, или вы картографирования к существующим таблицам? – Chris

+0

Не уверен, что это имеет какое-либо отношение к вашей проблеме, но это может быть полезно. Возможно, миграция не смогла правильно настроить базу данных для генерации вашего ключа для вас, и когда вы пытаетесь выполнить обновление, ни EF, ни DB не задают ваш ключ ... https://entityframework.codeplex.com/workitem/509 – Steve

+2

@Steve Это была проблема! Спасибо, Стив! Я что-то изменил в сущности, которую миграция не распознала, поэтому она настраивалась. Благодаря! – Fitzpleasure

ответ

8

Существует ошибка в Framework Entity, где миграция не будет должным образом обнаруживать изменения в DatabaseGeneratedOption.

См. this issue on the Entity Framework page on the Codeplex website описание проблемы и пример ее воссоздания.

+1

Я потратил много часов, пытаясь понять это. Я закончил с удалением всех моих таблиц и миграций, а затем это сработало. Благодаря! – robertk

0

Если вы можете добавить этот атрибут [DatabaseGenerated(DatabaseGeneratedOption.None)] с ключом, это сработало для меня с сущностью framework 6.1.3.

Для примера,

[Key] 
[DatabaseGenerated(DatabaseGeneratedOption.None)] 
Public int EmployeeId { get; set; } 
Смежные вопросы

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