У меня есть следующий график:
public class Report
{
public Guid Id { get; set; }
public ICollection<EmployeeEntry> EmployeeEntries { get; set; }
}
public class EmployeeEntry
{
public Guid Id { get; set; }
public DateTimeOffset EntryDate { get; set; }
public Address Address { get; set; }
}
public class Address
{
public string City { get; set; }
public string State { get; set; }
}
И используя fluentApi, я сконфигурировал Address как принадлежащий объекту EmployeeEntry
объект, как показано ниже:
private void ConfigureEmployeeEntry(EntityTypeBuilder<EmployeeEntry> builder)
{
builder.OwnsOne(x => x.Address, w =>
{
w.Property(x => x.City).HasMaxLength(100);
w.Property(x => x.State).HasMaxLength(100);
});
}
Но когда у меня один и тот же адрес для более чем одного EmployeeEntry
и работает следующий код:
dbContext.Reports.Add(report);
dbContext.SaveChanges();
Я получил следующее исключение:
Объект типа «EmployeeEntry» разделяет таблицу
report.EmployeeEntries с сущностями типа
'EmployeeEntry.Address # Address', но нет объектов этого типа
с тем же значением ключа, которое было помечено как «Добавлено». Рассматривать
используя 'DbContextOptionsBuilder.EnableSensitiveDataLogging', чтобы увидеть
ключевые значения.
Как я заметил, после добавления отчета до SaveChanges()
EF делает Address как null
.
Я использую последнюю версию ядра EntityFramework.