c# - 在父实体中更新子实体会产生重复的违规键错误
问题描述
我有以下类 spacetype 和 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();
将更新后的值保存到 db 后,尝试再次检索它
var spaceTypesUpdated = ctx.SpaceTypes
.Include("MasterSection.ParentMasterSection")
.Include("SectionOwners")
.ToList();
// serialize spaceTypesUpdated to json
推荐阅读
- c# - c# json 从 json 结果中只获取数组
- python - 如何获取netcdf4 Dataset的一个维度的数据
- php - 使用 Amazon SNS 使用 PHP AWS SDK v3.199.0 发送 SMS 消息?
- azure-active-directory - msal-angularv2.0.4 IE11 不能与 promise polyfill 一起使用
- linux - Intel 应用程序:如何从整数模式转换到浮点模式
- excel - 使用条件格式对现有文件进行 SAS 导出
- react-native - 反应原生图像 uri 和异步存储
- jenkins - 詹金斯,脚本化管道:为什么要回显额外的字符?
- elasticsearch - RSpec 和 VCR:对 Elasticsearch 的请求有时会失败
- excel - 列出共享 Outlook 文件夹中的所有子文件夹路径