炫意html5
最早CSS3和HTML5移动技术网站之一

请教efcore 3.1内嵌对象(值对象)不能更新问题

问题是这样的,比方说我有一个Warehouse类,它有3个属性,3个属性中的Position属性是一个Class。两个class我映射到一张表中。

Warehouse与Position的代码如下

public class Warehouse
{
public long Id { get; set; }
public string Name { get; set; }
public WarehousePosition Position { get; set }
}
public class WarehousePosition
{
public string Code { get; set; }
public string Description { get; set }
}

映射Position代码如下,映射是没有问题的,可以正常生成。

 builder.OwnsOne(x => x.Position, y =>
{
y.Property(x => x.Code).IsRequired().HasColumnName("PositionCode").HasMaxLength(32);
y.Property(x => x.Description).HasColumnName("PositionDescription").HasMaxLength(64);
});

可以正常insert

如果修改了Name属性,可以正常更新

如果同时修改了Name属性与Position属性可以正常更新

如果只修改Position属性,就更新不了。跟踪实体的状态是unchange状态,伪代码如下。

var warehouse = await repo.FindAsync(1);
warehouse.Position = new WarehousePosition();
await dbContext.SaveChangesAsync(cancellationToken);

回答

问题补充:

我在github,efcore的issues看了下,有很多人提出这个问题,但官方说3.0已经解决了。然而我用的3.1依旧不行。。头大。。

炫意HTML5 » 请教efcore 3.1内嵌对象(值对象)不能更新问题

Java基础教程Android基础教程