Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EF Core 2.0更新值对象不工作_C#_Entity Framework_Value Objects - Fatal编程技术网

C# EF Core 2.0更新值对象不工作

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(); 但当我尝试更新它时,会抛出以下错误:

我尝试为EF Core 2.0实现价值对象模式:

根据Microsoft的示例,我向订单聚合根添加了以下方法:

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 
}

您应该发布进行更新的代码。地址来自哪里?为了解决特定情况下的错误,我认为错误消息中的以下段落很有帮助:“在替换所属实体时,在不更改实例的情况下修改属性,或者先分离以前的所属实体条目。”我也有同样的问题。你能帮助任何人吗?值对象是不可变的,但如果替换它们,则会出现以下错误:(