Jam*_*ame 6 entity-framework entity-framework-core asp.net-core abp
我们收到以下错误,该错误似乎仅在将日期时间添加到值对象时才会发生。'实体类型'TimeWindow'无法配置为拥有的,因为它已被配置为非拥有的。如果您想覆盖以前的配置,请首先通过调用“忽略”从模型中删除实体类型。
值对象类:
public class TimeWindow : ValueObject
{
public DateTime? StartTime { get; set; }
public DateTime? EndTime { get; set; }
private TimeWindow()
{
}
public TimeWindow(
DateTime? startTime,
DateTime? endTime)
{
StartTime = startTime;
EndTime = endTime;
}
protected override IEnumerable<object> GetAtomicValues()
{
yield return StartTime;
yield return EndTime;
}
}
Run Code Online (Sandbox Code Playgroud)
在 OnModelCreating 内部,我们添加了 OwnsOne 关系:
builder.Entity<Manifest>(b =>
{
b.ToTable(DistributionConsts.DbTablePrefix + "Manifests", DistributionConsts.DbSchema);
b.ConfigureByConvention();
b.OwnsOne(b => b.TimeWindow);
});
Run Code Online (Sandbox Code Playgroud)
我们将 TimeWindow 值对象添加到的实体:
public class Manifest : FullAuditedAggregateRoot<Guid>
{
protected Manifest()
{
}
public Manifest(
Guid id) : base(id)
{
}
public virtual TimeWindow TimeWindow { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我们有另一个实体,具有以相同方式配置的不同 ValueObject,但没有任何 DateTimes,并且我们没有收到任何错误。在构建器之前和构建器内部添加.Ignore(x => x.TimeWindow);
仍然错误(如错误所示)。
builder.Ignore<TimeWindow>();
builder.Entity<Manifest>(b =>
{
b.ToTable(DistributionConsts.DbTablePrefix + "Manifests", DistributionConsts.DbSchema);
b.ConfigureByConvention();
b.OwnsOne(b => b.TimeWindow);
});
Run Code Online (Sandbox Code Playgroud)
添加builder.Ignore<TimeWindow>();
行将从模型中删除实体类型,并允许我覆盖它并将其配置为OwnsOne
归档时间: |
|
查看次数: |
6003 次 |
最近记录: |