繁体   English   中英

实体框架更新一对一关系的两个表

[英]Entity Framework updating two tables with one to many relationship

我首先使用EF代码来控制我的数据。 我有两个模型, ElectricitySiteElectricitySiteSplit

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();
}

单击“保存”按钮时出现以下错误:

附加类型为'MySolution.Repo.ElectricityModels.ElectricitySiteSplit'的实体失败,因为相同类型的另一个实体已经具有相同的主键值。 如果图形中的任何实体具有相互冲突的键值,则使用“附加”方法或将实体的状态设置为“不变”或“修改”时,可能会发生这种情况。 这可能是因为某些实体是新实体,尚未收到数据库生成的键值。 在这种情况下,请使用“添加”方法或“已添加”实体状态来跟踪图形,然后根据需要将非新实体的状态设置为“未更改”或“已修改”。

我认为这是因为我尚未附加ElectricitySiteSplit实体,但是如果将其添加到ElectricitySites附件下方,则可以:

_context.ElectricitySiteSplits.Attach(updatedElectricitySite.SiteSplits);

我收到此错误:

严重性代码说明项目文件行抑制状态错误CS1503参数1:无法从“ System.Collections.Generic.List”转换为“ UtilityBilling.Repo.ElectricityModels.ElectricitySiteSplit”

如何处理以清单形式包含在updatedElectrcitiySite.SiteSplitsElectricitySiteSplits表更新。

仅供参考-我已经在这里查看了:

实体框架5更新记录

https://msdn.microsoft.com/zh-CN/data/jj592676.aspx

EF不会自动处理两个表。 我必须指定添加/更新/删除的项目。 看看这个线程干净地更新Entity Framework中的层次结构

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM