Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 实体框架-具有复合主键的对象_Entity Framework_Composite Primary Key - Fatal编程技术网

Entity framework 实体框架-具有复合主键的对象

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

我正在使用EntityFramework4,最近我将其中一个对象的主键更改为包含2列而不是1列(它以前只有id-Guid,现在有id和version-int)

当我尝试创建另一个具有相同id但版本不同的对象时,会出现以下异常:

已成功提交对数据库的更改,但出现错误 更新对象上下文时发生。ObjectContext可能是 处于不一致的状态。内部异常消息:AcceptChanges 无法继续,因为对象的键值与其他键值冲突 ObjectStateManager中的对象。确保键值是正确的 在调用AcceptChanges之前是唯一的

我查看了数据库,发现有两个对象具有相同的id,但版本不同,正如我所预期的

如何使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>  

我将提供任何其他需要的代码部分

编辑:
表定义:

guid是在应用程序中设置的

编辑2:

我的数据库中有2个这样的对象用于测试。我刚刚看到,在查看上下文的Tests集合时,其中一个集合被复制了两次,而不是两个不同的对象(具有不同的版本和日期)?是否正确设置了应用程序中的guid?是和是,请参阅编辑以获取表定义。谢谢这应该行得通,但我怀疑您的EDMX现在不正确。作为测试,制作一个新的EF模型。第二天,数据库中添加了几行代码,它开始按预期工作。我讨厌海森堡。不管怎样,谢谢你的帮助。你也在数据库中更改了吗?是否正确设置了应用程序中的guid?是和是,请参阅编辑以获取表定义。谢谢这应该行得通,但我怀疑您的EDMX现在不正确。作为测试,制作一个新的EF模型。第二天,数据库中添加了几行代码,它开始按预期工作。我讨厌海森堡。无论如何,谢谢你的帮助。