2013-12-23 12 views
0

Я создал базовый тестовый проект Entity Framework, который использует подход Code-First для заполнения базы данных, которая имеет две таблицы.Почему код EntityFramework сначала игнорирует значение ключа, заданное в коде

Однако я заметил, что структура, как представляется, автоматически присваивает значение записи, которая используется как внешний ключ для другой таблицы, несмотря на то, что я уже установил значение в коде.

При проверке через отладчик я вижу, что свойство объекта верное до тех пор, пока не будет вызвана функция SaveChanges(), но при проверке базы данных набор, который я установил, был перезаписан автоматически сгенерированным значением.

я могу обойти эту проблему, применив следующий атрибут к свойству:

[Key] 
[DatabaseGenerated(DatabaseGeneratedOption.None)] 

Однако, я думал, что ценности были только автоматически сгенерированных, если значение не было установлено в коде. Я ошибаюсь, или такое поведение можно ожидать?

Я заметил, что такое же поведение неверно для первичного ключа, который не действует как внешний ключ.

Любая помощь очень ценится.

+0

Покажите нам код, пожалуйста. –

+0

Трудно сказать, не видя больше, но я собираюсь угадать. Вы устанавливаете атрибут [Key] в своем столбце внешнего ключа? Если да, то нет. По моему мнению, [Key] предназначен для первичного ключа и не должен использоваться для определения внешнего ключа. –

+0

Спасибо за это, хотя я не добавлял никаких атрибутов в свойство до тех пор, пока не столкнулся с проблемой. – user1762339

ответ

3

[Key]
[DatabaseGenerated (DatabaseGeneratedOption.None)]

аннотаций или Fluent API эквивалент требуется при использовании ключа ИНТ Id и вы хотите поставить Id.

Ef Annotations поведение по умолчанию для Id Int

+0

Это объяснение, безусловно, согласуется с поведением, которое я видел - значения ключа int, которые я предоставил, перезаписываются, если не применяются вышеуказанные атрибуты. Ключ внешнего ключа был красной селедкой; где ключевое значение не было перезаписано, используется строка, а не int. – user1762339

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