Должен ли я дважды реализовать ключ для кода EF с наследованием - PullRequest
1 голос
/ 18 ноября 2011

У меня есть абстрактный суперкласс DataContent:

public abstract class DataContent
{
    [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [ForeignKey("Sheet")] //Foreign Key van Sheet
    public int SheetId { get; set; }
    public string Name { get; set; }

    public DataContent(int i, string n)
    {
        Id = i;
        Name = n;
    }

и 3 подкласса, например EmptyContent:

public class EmptyContent: DataContent
{

    //TODO: Do these keys have to be here as well???
    [Key(), DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }
    [ForeignKey("Sheet")] //Foreign Key van Sheet
    public int SheetId { get; set; }

    public string Name { get; set; }
    public string Text { get; set; }


    public EmptyContent (int i, string n) : base(i,n)
    {
        Text = "";

    }

}

Мой вопрос: нужно ли объявлять (внешние) ключидважды для Entity Framework для создания базы данных?или я могу просто поместить их только в суперкласс Datacontent?

[Еще студент, извините, если этот вопрос кажется вам глупым:)]

1 Ответ

1 голос
/ 18 ноября 2011

Каждое свойство может быть реализовано только один раз (имя должно быть уникальным во всей иерархии). Ваши производные классы не должны иметь никаких свойств из базового класса, если они не переопределяют их.

...