C# 实体框架使用一对多关系更新两个表

C# 实体框架使用一对多关系更新两个表,c#,entity-framework,C#,Entity Framework,我首先使用EF代码来控制我的数据。我有两种型号,ElectricitySite和ElectricitySiteSplit ElectricitySite包含列出ElectricitySiteSplits,这是一种一对多关系 我正在尝试为存储库层编写更新方法,该方法将处理这两个表,到目前为止,我有: public void UpdateElectricitySite(ElectricitySite updatedElectricitySite) { var dbElectricitySit

我首先使用EF代码来控制我的数据。我有两种型号,
ElectricitySite
ElectricitySiteSplit

ElectricitySite
包含
列出ElectricitySiteSplits
,这是一种一对多关系

我正在尝试为存储库层编写更新方法,该方法将处理这两个表,到目前为止,我有:

public void UpdateElectricitySite(ElectricitySite updatedElectricitySite)
{
    var dbElectricitySite = GetElectricitySite(updatedElectricitySite.ElectricitySiteId);

    _context.ElectricitySites.Attach(updatedElectricitySite);
    _context.Entry(updatedElectricitySite).State = EntityState.Modified;

    _context.SaveChanges();
}
单击“保存”按钮时出现以下错误:

附加类型为的实体 “MySolution.Repo.ElectricityModels.ElectricitySplit”失败 因为相同类型的另一个实体已具有相同的主实体 键值。使用“附加”方法或设置时可能会发生这种情况 实体的状态为“未更改”或“已修改”,如果实体处于 该图形具有冲突的键值。这可能是因为 实体是新的,尚未收到数据库生成的密钥 价值观在这种情况下,请使用“添加”方法或“添加”实体状态 跟踪图形,然后将非新实体的状态设置为 “未更改”或“修改”,视情况而定

我想这是因为我没有附加我的
ElectricitySiteSplit
实体,但是如果我将其添加到我的ElectricitySites附件下面:

_context.ElectricitySiteSplits.Attach(updatedElectricitySite.SiteSplits);
我得到这个错误:

严重性代码说明项目文件行抑制状态 错误CS1503参数1:无法从转换 'System.Collections.Generic.List' 至“公用事业计费.回购.电力模型.电力模型”

如何处理
updateedelectricitysite.sitespits
中作为列表包含的
electricitysplits
表更新

仅供参考-我已经看过了:


EF不会自动处理这两个表。我必须指定添加/更新/删除的项目。看看这条线


希望这有帮助

你能把它们圈起来吗?那么,把每一个都连接起来但是,根据您的代码,您可能有新的站点拆分,因此需要添加而不是附加?GetElectricityState是否包括ElectricityState?如果是这样,它们在检索时处于上下文中,不必再次附加(除非它们离开ChangeTracker,在这种情况下,它们必须再次检索)。是的,可能会有或多或少的拆分,现有拆分也可能已更改。