С помощью подхода, основанного на коде (но с существующей схемой БД), мы пытаемся отобразить 2 разных объекта (Customer и Resource) в одну и ту же таблицу.Обе сущности имеют одинаковые ключи и отображение.
Однако при запуске приложения возникает ошибка во время выполнения, сообщающая нам таинственное сообщение:
System.InvalidOperationException: Type 'Resource' cannot be mapped to table 'CLIENT' since type 'Customer' also maps to the same table and their primary key names don't match. Change either of the primary key property names so that they match.
Пример:
public class EntityA
{
public string ID { get; set; }
public string Discriminator { get; set; }
public string TimeStamp { get; set; }
}
public class EntityB
{
public string ID { get; set; }
public string Discriminator { get; set; }
public string CreatedBy { get; set; }
}
public class EntityAConfiguration : EntityTypeConfiguration<EntityA>
{
public EntityAConfiguration()
{
HasKey(x => new {x.ID, x.Discriminator } );
Property(x => x.ID).HasColumnName("MyTable_ID").HasDatabaseGenerationOption(DatabaseGenerationOption.None);
Property(x => x.Discriminator).HasColumnName("MyTable_Discriminator").HasDatabaseGenerationOption(DatabaseGenerationOption.None);
Property(x => x.TimeStamp).HasColumnName("MyTable_TimeStamp");
ToTable("MyTable");
}
}
public class EntityBConfiguration : EntityTypeConfiguration<EntityB>
{
public EntityBConfiguration()
{
HasKey(x => new { x.ID, x.Discriminator });
Property(x => x.ID).HasColumnName("MyTable_ID").HasDatabaseGenerationOption(DatabaseGenerationOption.None);
Property(x => x.Discriminator).HasColumnName("MyTable_Discriminator").HasDatabaseGenerationOption(DatabaseGenerationOption.None);
Property(x => x.CreatedBy).HasColumnName("MyTable_CreatedBy");
ToTable("MyTable");
}
}
Приведенный выше код аналогичен нашему коду клиента / ресурса (но проще для объяснения!).Однако получите то же сообщение об ошибке, в котором говорится, что EntityA и EntityB не могут быть сопоставлены с одной и той же таблицей, поскольку их имена первичных ключей не совпадают.Любая идея, как мы могли бы разные сущности в одной таблице?
Спасибо за вашу помощь