C# 实体框架使用一对多关系更新两个表
我首先使用EF代码来控制我的数据。我有两种型号,C# 实体框架使用一对多关系更新两个表,c#,entity-framework,C#,Entity Framework,我首先使用EF代码来控制我的数据。我有两种型号,ElectricitySite和ElectricitySiteSplit ElectricitySite包含列出ElectricitySiteSplits,这是一种一对多关系 我正在尝试为存储库层编写更新方法,该方法将处理这两个表,到目前为止,我有: public void UpdateElectricitySite(ElectricitySite updatedElectricitySite) { var dbElectricitySit
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,在这种情况下,它们必须再次检索)。是的,可能会有或多或少的拆分,现有拆分也可能已更改。