C# 无法检测EF Core中阴影属性的更改
我正在尝试获取属性的更改,但有一个问题,C# 无法检测EF Core中阴影属性的更改,c#,entity-framework-core,C#,Entity Framework Core,我正在尝试获取属性的更改,但有一个问题,CurrentValue和OriginalValue都为空,是否有阴影属性的替代方案 var entities = _context .ChangeTracker .Entries() .ToArray(); foreach (var entity in entities) { foreach (var property in entity.Properties) { if (property.Me
CurrentValue
和OriginalValue
都为空,是否有阴影属性的替代方案
var entities = _context
.ChangeTracker
.Entries()
.ToArray();
foreach (var entity in entities)
{
foreach (var property in entity.Properties)
{
if (property.Metadata.IsShadowProperty())
{
var newValue = property.CurrentValue; // null
var oldValue = property.OriginalValue; // null
}
}
}
实体类:
public class ParentEntity
{
public string Id { get; set; }
public OwnedEntity SomeEntity { get; set; }
private string _name;
public ParentEntity(string id, string name)
{
Id = id;
_name = name;
SomeEntity = new OwnedEntity();
}
}
public class OwnedEntity
{
public string Id { get; set; }
public string Name { get; set; }
public OwnedEntity()
{
Id = Guid.NewGuid().ToString();
Name = "Some Name";
}
}
配置:
public void Configure(EntityTypeBuilder<ParentEntity> builder)
{
builder.HasPartitionKey(x => x.PartitionKey);
builder.Property("_name").ToJsonProperty("name");
builder.Property(x => x.Id).ToJsonProperty("id");
builder.OwnsOne(x => x.SomeEntity, x =>
{
x.ToJsonProperty("someEntity");
x.Property(x => x.Id).ToJsonProperty("id");
x.Property(x => x.Name).ToJsonProperty("name");
});
builder.HasKey(x => x.Id);
builder.HasDiscriminator();
builder.ToContainer("container1");
}
public void配置(EntityTypeBuilder)
{
HasPartitionKey(x=>x.PartitionKey);
建筑商财产(“名称”)。Tojson财产(“名称”);
builder.Property(x=>x.Id).ToJsonProperty(“Id”);
builder.OwnsOne(x=>x.SomeEntity,x=>
{
x、 ToJsonProperty(“某实体”);
x、 属性(x=>x.Id);
x、 属性(x=>x.Name);
});
HasKey(x=>x.Id);
builder.HasDiscriminator();
建造商对集装箱(“集装箱1”);
}
你能用shadow字段显示实体类吗?@vernou当然,已更新。我们谈论的是什么shadow属性?因为我看到的只是“拥有的实体”,没有影子属性,除了可能是所有者的“FK”,但它不应该变异(因为它也是拥有的实体的“PK”)。另外,很高兴看到引入跟踪条目的代码-是从数据库加载,还是附加断开连接的实体等。@IvanStoev for“OwnedEntity”属性实例“property.Metadata.IsShadowProperty()”返回true。我的问题是为什么CurrentValue、OriginalValue对于该属性为空!可以显示阴影属性名称吗?