2017-02-10 3 views
0

Сначала я использую код Entity Framework, чтобы попытаться создать базу данных, в которой у меня есть несколько таблиц, которые имеют уникальные первичные ключи.Первый код обмена Первичный ключ между таблицами

У меня есть следующая структура для моих классов домена и надеюсь, что FirstClass, SecondClass, ThirdClass будут созданы как таблицы, которые ссылаются на BaseTable, где хранятся общие ключи. В этом примере я включил класс SharedClass, так как у меня также есть эта strutcure в моем проекте.

[Table("BaseTable")] 
public abstract class BaseClass { 
    public int Id { get; set; } 
} 

public abstract class SharedClass : BaseClass { 
    public string SharePropertyOne { get; set; } 
    public string SharePropertyOne { get; set; } 
} 

[Table("FirstClass")] 
public abstract class FirstClass : SharedClass { 
    public string SharePropertyOne { get; set; } 
    public string SharePropertyOne { get; set; } 
} 

[Table("SecondClass")] 
public abstract class SecondClass : SharedClass { 
    public string SharePropertyOne { get; set; } 
    public string SharePropertyOne { get; set; } 
} 

[Table("ThirdClass")] 
public abstract class ThirdClass : SharedClass { 
    public string SharePropertyOne { get; set; } 
    public string SharePropertyOne { get; set; } 
} 

Что сейчас происходит то, что FirstClass, SecondClass и ThirdClass все создается, но со своими первичными ключами и не BaseTable не создается.

Я не уверен, что у меня что-то не хватает, просмотрев несколько вопросов, которые задают нечто подобное.

+0

Можете ли вы показать связанные DbSets, определенные в вашем DbContext, а также беглое конфигурирование, если оно есть. –

+0

Итак, у меня нет ни одного из вышеперечисленных классов как DbSets в Контексте, так как ни один из них не является совокупными маршрутами и не содержит конфигураций Fluent API. – jjharrison

ответ

0

Наследование EF по умолчанию не активируется и даже путем применения аннотации данных Table к базовому классу.

Он может быть активирован либо добавляя DbSet к производным DbContext:

public DbSet<BaseClass> BaseClass { get; set; } 

, который также позволяет использовать полиморфные запросы, или с плавной конфигурации - голый минимум нужно, это:

modelBuilder.Entity<BaseClass>();