Тип объекта [TType] не может быть добавлен в модель, поскольку слабый тип объекта с тем же именем уже существует

#c# #.net-core #ef-core-2.2

#c# #.net-core #ef-core-2.2

Вопрос:

После обновления ef-core с версии 2.1 до версии 2.2 (2.2.2) я начал получать ошибку при выполнении миграции. Я создал тестовый проект, вот мой код:

 public class Root
    {
        public int Id { get; set; }
        public MainAddress Address1 { get; set; }
        public MainAddress Address2 { get; set; }
    }

public class MainAddress
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public  SubAddress SubAddress { get; set; }
    }

public class SubAddress
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Number { get; set; }
    public SubSubAddress SubSubAddress { get; set; }
}

public class SubSubAddress
{
    public int Id { get; set; }
    public string Text { get; set; }
}

public class RootConfig : IEntityTypeConfiguration<Root>
    {
        public void Configure(EntityTypeBuilder<Root> builder)
        {
            builder.ToTable("Roots");

            builder.HasKey(it => it.Id);

            builder.OwnsOne(root => root.Address1, address =>
            {
                address.OwnsOne(a => a.SubAddress, subAddress =>
                {
                    subAddress.OwnsOne(it => it.SubSubAddress);
                });
            });

            builder.OwnsOne(root => root.Address2, address =>
            {
                address.OwnsOne(a => a.SubAddress, subAddress =>
                    {
                        subAddress.OwnsOne(it => it.SubSubAddress);
                    });
            });
        }
    }

public class TestContext : DbContext
    {
        public TestContext(DbContextOptions<TestContext> context) : base(context)
        {

        }

        public DbSet<Root> Roots { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            base.OnModelCreating(modelBuilder);
            modelBuilder.ApplyConfiguration(new RootConfig());
        }
    }
  

итак, когда я обновляю базу данных, я получаю ошибку:
Система.Исключение InvalidOperationException: тип объекта ‘EFError1.Модели.SubAddress’ не может быть добавлен в модель, поскольку слабый тип объекта с тем же именем уже существует.
введите описание изображения здесь

Если я использую OwnsOne, вложенный 2 раза — тогда все хорошо. Есть идея?

Комментарии:

1. Я смог дублировать его даже в последней версии 2.2.3. По-видимому, ошибка EF Core, я бы посоветовал сообщить об этом в их службу отслеживания проблем.

2. да, я уже сделал. github.com/aspnet/EntityFrameworkCore/issues/14994