更新父实体中的子实体会出现重复违规键错误
updating child entity in parent entity gives duplicate violation key error
我有以下 类 空间类型和具有以下结构的 mastersection
public class SpaceType
{
public Guid Id { get; set; }
[ForeignKey("MasterSection")]
public string MasterSectionName { get; set; }
public virtual MasterSection MasterSection { get; set; }
[ForeignKey("LibrarySpaceTypeCategory")]
public Guid? LibrarySpaceTypeCategoryId { get; set; }
public virtual LibrarySpaceTypeCategory LibrarySpaceTypeCategory { get; set; }
[Column(TypeName = "jsonb")]
public MechanicalData MechanicalData { get; set; }
}
public class MasterSection
{
[Key, GraphQLNonNullType]
public string Name { get; set; }
public List<SectionEmployee> SectionOwners { get; set; } = new List<SectionEmployee>();
[ForeignKey("ParentMasterSection"), GraphQLIgnore]
public string ParentMasterSectionName { get; set; }
public virtual MasterSection ParentMasterSection { get; set; }
}
我正在尝试为所有空间类型更新 mastersection 对象,如下所示
var spaceTypes = ctx.SpaceTypes.ToList();
foreach(var spacetype in spaceTypes)
{
spacetype.MasterSection = masterSectionMappedLibrary["Space Type"];
}
ctx.SaveChanges();
以下是我从 masterSectionMappedLibrary["Space Type"]
获得的数据
并在此处 ctx.SaveChanges();
出现错误,例如 Duplicate key violates unique constraint on PK_Mastersections
。
任何人都可以让我知道我哪里做错了,我正在将 EF 核心与 postgreSQL 一起使用。
非常感谢
更新:
试试这个
var spaceTypes = ctx.SpaceTypes.ToList();
foreach(var spacetype in spaceTypes)
{
spacetype.MasterSectionName = masterSectionMappedLibrary["Space Type"].Name;
}
ctx.UpdateRange(spaceTypes);
ctx.SaveChanges();
将更新后的值保存到数据库后,尝试再次检索它
var spaceTypesUpdated = ctx.SpaceTypes
.Include("MasterSection.ParentMasterSection")
.Include("SectionOwners")
.ToList();
// serialize spaceTypesUpdated to json
我有以下 类 空间类型和具有以下结构的 mastersection
public class SpaceType
{
public Guid Id { get; set; }
[ForeignKey("MasterSection")]
public string MasterSectionName { get; set; }
public virtual MasterSection MasterSection { get; set; }
[ForeignKey("LibrarySpaceTypeCategory")]
public Guid? LibrarySpaceTypeCategoryId { get; set; }
public virtual LibrarySpaceTypeCategory LibrarySpaceTypeCategory { get; set; }
[Column(TypeName = "jsonb")]
public MechanicalData MechanicalData { get; set; }
}
public class MasterSection
{
[Key, GraphQLNonNullType]
public string Name { get; set; }
public List<SectionEmployee> SectionOwners { get; set; } = new List<SectionEmployee>();
[ForeignKey("ParentMasterSection"), GraphQLIgnore]
public string ParentMasterSectionName { get; set; }
public virtual MasterSection ParentMasterSection { get; set; }
}
我正在尝试为所有空间类型更新 mastersection 对象,如下所示
var spaceTypes = ctx.SpaceTypes.ToList();
foreach(var spacetype in spaceTypes)
{
spacetype.MasterSection = masterSectionMappedLibrary["Space Type"];
}
ctx.SaveChanges();
以下是我从 masterSectionMappedLibrary["Space Type"]
并在此处 ctx.SaveChanges();
出现错误,例如 Duplicate key violates unique constraint on PK_Mastersections
。
任何人都可以让我知道我哪里做错了,我正在将 EF 核心与 postgreSQL 一起使用。
非常感谢
更新:
试试这个
var spaceTypes = ctx.SpaceTypes.ToList();
foreach(var spacetype in spaceTypes)
{
spacetype.MasterSectionName = masterSectionMappedLibrary["Space Type"].Name;
}
ctx.UpdateRange(spaceTypes);
ctx.SaveChanges();
将更新后的值保存到数据库后,尝试再次检索它
var spaceTypesUpdated = ctx.SpaceTypes
.Include("MasterSection.ParentMasterSection")
.Include("SectionOwners")
.ToList();
// serialize spaceTypesUpdated to json