C# EF Core 2.0更新值对象不工作
我尝试为EF Core 2.0实现价值对象模式: 根据Microsoft的示例,我向订单聚合根添加了以下方法:C# EF Core 2.0更新值对象不工作,c#,entity-framework,value-objects,C#,Entity Framework,Value Objects,我尝试为EF Core 2.0实现价值对象模式: 根据Microsoft的示例,我向订单聚合根添加了以下方法: public void SetAddress(Address address) { Address = address; } 因此,我调用此方法并保存更改: orderToUpdate.SetAddress(address); await _orderRepository.UnitOfWork.SaveEntitiesAsync(); 但当我尝试更新它时,会抛出以下错误:
public void SetAddress(Address address)
{
Address = address;
}
因此,我调用此方法并保存更改:
orderToUpdate.SetAddress(address);
await _orderRepository.UnitOfWork.SaveEntitiesAsync();
但当我尝试更新它时,会抛出以下错误:
InvalidOperationException:实体类型的实例。。。;无法跟踪,因为具有相同键值的另一个实例。。。已经在跟踪。替换所属实体时,在不更改实例的情况下修改属性,或先拆离以前的所属实体条目
值对象模式是否从未用于更新,或者我是否做错了什么?此线程非常有用。 总之,改变现有拥有的对象,而不是设置新对象,例如:
public void UpdateFrom(string street1, string street2, string city, string state, string zipcode, string country)
{
StreetAddress1 = street1;
StreetAddress2 = street2;
City = city;
State = state;
ZipCode = zipcode
}
public void UpdateFrom(Address other)
{
StreetAddress1 = other.StreetAddress1 ;
StreetAddress2 = other.StreetAddress2;
City = other.City ;
State = other.State;
ZipCode = other.ZipCode
}
您应该发布进行更新的代码。地址来自哪里?为了解决特定情况下的错误,我认为错误消息中的以下段落很有帮助:“在替换所属实体时,在不更改实例的情况下修改属性,或者先分离以前的所属实体条目。”我也有同样的问题。你能帮助任何人吗?值对象是不可变的,但如果替换它们,则会出现以下错误:(