Я использую Entity Framework 4, и недавно я изменил первичный ключ одного объекта, чтобы он содержал 2 столбца вместо 1 (раньше он имел только свой идентификатор - Guid - и теперь у него есть идентификатор и версия - инт).
Когда я пытаюсь создать другой объект с тем же идентификатором, но другой версией, я получаю следующее исключение:
Изменения в базе данных были успешно зафиксированы, но произошла ошибка
произошло при обновлении контекста объекта. ObjectContext может быть
в противоречивом состоянии. Внутреннее сообщение об исключении: AcceptChanges
не может продолжаться, потому что значения ключа объекта конфликтуют с другим
Объект в ObjectStateManager. Убедитесь, что значения ключей
уникальный перед вызовом AcceptChanges.
Я посмотрел в базе данных, и у меня есть 2 объекта с одинаковым идентификатором, но с разными версиями, как я и предполагал.
Как заставить EF взаимодействовать с этими настройками?
Настройка сущности из файла edmx:
<EntityType Name="Test">
<Key>
<PropertyRef Name="TestID" />
<PropertyRef Name="TestVersion" />
</Key>
<Property Type="Guid" Name="TestID" Nullable="false" />
<Property Type="Int32" Name="FolderID" Nullable="false" />
<Property Type="String" Name="Name" Nullable="false" MaxLength="Max" FixedLength="false" Unicode="false" />
<Property Type="Int32" Name="TestVersion" Nullable="false" />
<Property Type="DateTime" Name="Date" Nullable="false" />
<Property Type="String" Name="Owner" Nullable="false" MaxLength="Max" FixedLength="false" Unicode="false" />
<Property Type="Binary" Name="TestObject" Nullable="false" MaxLength="Max" FixedLength="false" />
<NavigationProperty Name="Folder" Relationship="Labster7Model.FK_Tests_Folders" FromRole="Test" ToRole="Folder" />
<Property Type="String" Name="Description" Nullable="false" MaxLength="Max" FixedLength="false" Unicode="false" />
</EntityType>
Я предоставлю любые другие необходимые части кода.
Edit:
Определение таблицы:
Гид установлен в приложении.
Редактировать 2:
У меня есть 2 таких объекта в моей БД для тестирования. Я только что увидел, что при просмотре коллекции тестов контекста один из них дублируется дважды вместо двух разных объектов (с разными версиями и датами).