У меня есть иерархия таблицы с отображением таблицы на конкретный тип (TPC). (я не уверен, что [Key, Column] атрибут являются необходимыми, но по https://stackoverflow.com/a/19792915/959779 это должно работать)Отображение таблицы на конкретный тип (TPC) с составным ключом в EF6
структура Класс:
public abstract class BaseEntity
{
[Key, Column(Order = 0)]
public int Id { get; set; }
}
public class Page: BaseEntity {
string Data { get; set; }
}
public class PageBackup: Page {
[Key, Column(Order = 1)]
public int PageId { get; set; }
public virtual Page Page { get; set; }
}
Когда Id
из Page
и PageBackup
образований являются пересекаются (после добавления к таблицам некоторые элементы) EF бросить на следующий excution
«Все объекты„EUICDataContext.Pages“в EntitySet должны иметь уникальные первичные ключи. Однако, экземпляр типа «Entities.PageBackup» и экземпляр типа «Entities.Page» оба имеют одно и то же значение первичного ключа, «EntitySet = Pages; Id = 6». "
Сущность отображение код ниже:
class PageMapping : EntityTypeConfiguration<Page>
{
public PageMapping()
{
Map(m =>{ m.ToTable("Page"); });
HasKey(t => t.Id });
}
}
class PageBackupMapping : EntityTypeConfiguration<PageBackup>
{
public PageBackupMapping()
{
Map(m =>{
m.MapInheritedProperties();
m.ToTable("PageBackup");
});
HasKey(t => new { t.Id, t.PageId });
}
}
Проблема заключается в том, хотя в EF PageMapping
имеет ключевое сценарий композитного Update-Database
семян создает таблицу со следующей подписью:
CREATE TABLE [dbo].[PageBackup](
[Id] [int] IDENTITY(1,1) NOT NULL,
[PageId] [int] NOT NULL,
[Data] [nvarchar](max) NULL,
CONSTRAINT [PK_dbo.PageBackup] PRIMARY KEY CLUSTERED
(
[Id] ASC
)
Is EF позволяет для создания таблиц с составными ключами (много примеров с отображением, но я не нашел никаких сообщений о миграции)
И как описать такую конфигурацию от имени картографирования TPC?
Любое другое предложение по решению будет полезно.