Entity framework 实体框架-具有复合主键的对象
我正在使用EntityFramework4,最近我将其中一个对象的主键更改为包含2列而不是1列(它以前只有id-Guid,现在有id和version-int) 当我尝试创建另一个具有相同id但版本不同的对象时,会出现以下异常: 已成功提交对数据库的更改,但出现错误 更新对象上下文时发生。ObjectContext可能是 处于不一致的状态。内部异常消息:AcceptChanges 无法继续,因为对象的键值与其他键值冲突 ObjectStateManager中的对象。确保键值是正确的 在调用AcceptChanges之前是唯一的 我查看了数据库,发现有两个对象具有相同的id,但版本不同,正如我所预期的 如何使EF与这些设置配合 edmx文件中实体的设置:Entity framework 实体框架-具有复合主键的对象,entity-framework,composite-primary-key,Entity Framework,Composite Primary Key,我正在使用EntityFramework4,最近我将其中一个对象的主键更改为包含2列而不是1列(它以前只有id-Guid,现在有id和version-int) 当我尝试创建另一个具有相同id但版本不同的对象时,会出现以下异常: 已成功提交对数据库的更改,但出现错误 更新对象上下文时发生。ObjectContext可能是 处于不一致的状态。内部异常消息:AcceptChanges 无法继续,因为对象的键值与其他键值冲突 ObjectStateManager中的对象。确保键值是正确的 在调用Acce
<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>
我将提供任何其他需要的代码部分
编辑:表定义:
guid是在应用程序中设置的 编辑2:
我的数据库中有2个这样的对象用于测试。我刚刚看到,在查看上下文的Tests集合时,其中一个集合被复制了两次,而不是两个不同的对象(具有不同的版本和日期)?是否正确设置了应用程序中的guid?是和是,请参阅编辑以获取表定义。谢谢这应该行得通,但我怀疑您的EDMX现在不正确。作为测试,制作一个新的EF模型。第二天,数据库中添加了几行代码,它开始按预期工作。我讨厌海森堡。不管怎样,谢谢你的帮助。你也在数据库中更改了吗?是否正确设置了应用程序中的guid?是和是,请参阅编辑以获取表定义。谢谢这应该行得通,但我怀疑您的EDMX现在不正确。作为测试,制作一个新的EF模型。第二天,数据库中添加了几行代码,它开始按预期工作。我讨厌海森堡。无论如何,谢谢你的帮助。