使用Code First存储与类和子类相关的对象

时间:2011-05-13 09:10:41

标签: entity-framework ef-code-first code-first

作为一个例子,我有一个对象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的关系(here),但这不是我想要的。

也许这是完全错误的做法,但我确信其他人也碰到了同样的事情。可以在不借助手动应用数据库中的约束的情况下完成。

1 个答案:

答案 0 :(得分:1)

从人身上移除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;}
}