Хранение объектов с Code First, которые связаны как классы и подклассы - PullRequest
0 голосов
/ 13 мая 2011

В качестве примера у меня есть объект Person, и Person наследуется Мужчинами и Женщинами.Person содержит свойства, которыми обладают и мужчина, и женщина, а мужчина и женщина содержат определенные свойства.

Я хочу сохранить их в базе данных, используя Entity Framework 4.1 Code First.Итак, я сделал три модельных объекта

class Person {
   int Id { get; set; }
   string Name { get; set; }
   string Weight { get; set; }
   public virtual Woman Woman { get; set; }
   public int WomanID { get; set; }
   public virtual Man Man { get; set; }
   public int ManID { get; set; }
}

class Woman {
   int Id { get; set; }
   bool IsPregnant { get; set; }
}

class Man {
   int Id { get; set; }
   bool ThinksWithDick { get; set; }

}

Итак, я Персона -> Мужчина / Женщина имеет отношение от 1 до 0..1.И я не знаю, как обеспечить это с помощью Code First.Я читал об отношениях 1: 1 ( здесь ), но это не то, что я ищу.

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

1 Ответ

1 голос
/ 13 мая 2011

Удалить ManId и WomanId и Мужчина и Женщина от Человека.Добавьте PersonId и Person в классы Woman and Man.

class Person {
   int Id { get; set; }
   string Name { get; set; }
   string Weight { get; set; }
}

class Woman {
   int Id { get; set; }
   bool IsPregnant { get; set; }
   int PersonId {get; set;}
   public virtual Person {get; set;}
}

class Man {
   int Id { get; set; }
   bool ThinksWithDick { get; set; }
   int PersonId {get; set;}
   public virtual Person {get; set;}
}
...