#entity-framework #entity-framework-4 #constraints #primary-key
#entity-framework #entity-framework-4 #ограничения #первичный ключ
Вопрос:
У меня есть таблица с именем farmers
. У каждого фермера указана страна, которая является обязательной.
Когда я добавляю нового фермера в базу данных с использованием antity framework, я получаю нарушение в таблице country. Похоже, entity Framework хочет добавить страну в таблицу country, но мне нужен только guid в моей таблице farmer:
Нарушение ограничения ПЕРВИЧНОГО КЛЮЧА ‘PK_Country’. Не удается вставить дубликат ключа в object ‘dbo.Страна’. Выполнение инструкции было завершено.
Может ли кто-нибудь посоветовать мне, что я делаю неправильно? вот код для вставки:
newFarmer.Guid = Guid.NewGuid();
ents.Farmer.AddObject(newFarmer);
ents.SaveChanges();
return newFarmer;
Я даже проверил состояние страны, и оно говорит без изменений.
Комментарии:
1. Добавьте структуру этих двух объектов и таблиц для вопроса.
2. В вашем фрагменте кода отсутствует самая важная часть: откуда берется
Country
объект, которому вы назначаетеnewFarmer.Country
? Обычно сразу можно догадаться, что вашCountry
объект не присоединен к ObjectContext при вызове,AddObject(newFarmer)
что приведет к ВСТАВКЕCountry
объекта. Но тогда ее состояние могло быть неunchanged
таким, как вы говорите. Исключение, которое у вас есть, — с объектом в состоянииunchanged
— довольно невозможно. В описании вашей проблемы и коде, должно быть, отсутствует какая-то важная информация.
Ответ №1:
Одним из возможных решений является то, что Entity Framework не понимает, что первичный ключ вашей сущности также является идентификатором и должен автоматически увеличиваться. У меня была такая же проблема в приложении, использующем EF 4.1, сначала с базой данных. Чтобы решить проблему, мне пришлось::
- Убедитесь, что первичный ключ моих сущностей имеет имя «ID» (чтобы избежать размещения декоратора [Key] над моим классом модели.
- Убедитесь, что для параметра свойства «Identity» вашей системы баз данных (в моем случае SQL Server) установлено значение «Yes».
Затем мой EF4.1 смог выполнить вставку и обновление моих объектов.
Надеюсь, это поможет!