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