Entity framework 将实体添加到上下文中

Entity framework 将实体添加到上下文中,entity-framework,Entity Framework,为什么这个简单的添加不起作用!我从数据库中获取一条上一条记录,通过使用上一条记录的数据实例化一个要添加的新实体,但我将报告编号增加1。我不断收到错误“属性'ReportNbr'是主键的一部分,无法修改。”我认为此错误是在您尝试更新现有实体的主键字段时发生的 这是我的对象和我以前使用的记录 var previousRecord = _repo.GetLatestRecord(); var recordToAdd = new Record() {

为什么这个简单的添加不起作用!我从数据库中获取一条上一条记录,通过使用上一条记录的数据实例化一个要添加的新实体,但我将报告编号增加1。我不断收到错误“属性'ReportNbr'是主键的一部分,无法修改。”我认为此错误是在您尝试更新现有实体的主键字段时发生的

这是我的对象和我以前使用的记录

var previousRecord = _repo.GetLatestRecord();
            var recordToAdd = new Record()
            {
                Year = previousRecord.Year,
                Month = previousRecord.Month,
                ReportNbr = ++previousRecord.ReportNbr,
                ...//other info
            };
_repo.AddRecord(recordToAdd);

显示的三个字段是表的主键。任何帮助都将不胜感激。

如果您有更改跟踪,请

++previousRecord.ReportNbr 
正在更新以前的记录

试一试


如果_repo是您的上下文,那么它不是_repo.Records.add(recordToAdd)吗?我有一个用于整个存储库的通用add方法,因此在AddRecord中有一个对通用方法的调用。我也在存储库中尝试了_context.Records.Add(recordToAdd),我得到了相同的错误。如果您有更改跟踪,则++previousRecord.ReportNbr正在更新previousRecord。尝试执行ReportNbr=previousRecord.ReportNbr+1;这就是问题所在…很简单。谢谢,伙计,我不知道这样的递增导致了更改跟踪。我将添加它作为一个答案,以便您可以接受并关闭它。
ReportNbr = previousRecord.ReportNbr + 1;