我首先使用EF代码来控制我的数据。我有两个模型,ElectricitySite
和ElectricitySiteSplit
。
ElectricitySite
包含List<ElectricitySiteSplits> ElectricitySiteSplits
,这是一对多关系。
我试图为存储库层编写我的Update方法,它将处理这两个表,到目前为止我有:
public void UpdateElectricitySite(ElectricitySite updatedElectricitySite)
{
var dbElectricitySite = GetElectricitySite(updatedElectricitySite.ElectricitySiteId);
_context.ElectricitySites.Attach(updatedElectricitySite);
_context.Entry(updatedElectricitySite).State = EntityState.Modified;
_context.SaveChanges();
}
单击“保存”按钮时出现以下错误:
附加类型的实体 &#39; MySolution.Repo.ElectricityModels.ElectricitySiteSplit&#39;失败 因为同一类型的另一个实体已经具有相同的主要实体 核心价值。使用&#39;附加&#39;方法或设置 一个实体的状态为“未变”&#39;或者&#39;修改&#39;如果有任何实体 图表具有冲突的键值。这可能是因为一些 实体是新的,尚未收到数据库生成的密钥 值。在这种情况下,请使用&#39;添加&#39;方法或“添加”#39;实体国家 跟踪图形,然后将非新实体的状态设置为 &#39;不变&#39;或者&#39;修改&#39;酌情。
我认为这是因为我没有附加我的ElectricitySiteSplit
实体,但是如果我在我的ElectricitySites附件中添加它:
_context.ElectricitySiteSplits.Attach(updatedElectricitySite.SiteSplits);
我收到此错误:
严重级代码描述项目文件行抑制状态 错误CS1503参数1:无法转换 &#39; System.Collections.Generic.List&#39; 到&#39; UtilityBilling.Repo.ElectricityModels.ElectricitySiteSplit&#39;
如何处理ElectricitySiteSplits
中包含的updatedElectrcitiySite.SiteSplits
表格更新作为列表。
仅供参考 - 我已经看过这里了:
答案 0 :(得分:2)
EF不会自动处理这两个表。我必须指定添加/更新/删除的项目。看一下这个帖子Cleanly updating a hierarchy in Entity Framework
希望这有帮助!