使用ado实体框架在DDD中组织我的域对象

时间:2010-08-29 11:45:13

标签: entity-framework .net-3.5 domain-driven-design oop

我有这两种类型的用户:父母和孩子,都是用户,具有相同的属性,但方法不同。

我创建了Base User类和2类:Parent和Kid,都继承了用户基类,每个类都有不同的方法。
用户类是部分类,因为实体框架模型具有相同的类,因为数据库只有Users表,没有父母或孩子。

现在,当我从Parent类创建一个对象,并尝试使用ado实体框架“AddObject("Users", (User)_parent)”插入数据库时​​,它给我一个错误,我正在插入父级,并且没有任何此类标识插入。

那么,我的域驱动设计是否存在问题,或者我应该在实体框架中编辑某些内容?

1 个答案:

答案 0 :(得分:2)

这称为Table Per Hiearchy(TPH)。这意味着您要使用一个表来存储从基本实体继承的多个实体。在您的情况下,它有点具体,因为继承的实体没有任何其他属性来存储。

您需要将Parent和Kid类添加到实体模型(从User实体派生)。在数据库中需要一个额外的列来区分Parent和Kid - 这是EF在从User表执行查询时知道要创建哪个实体的唯一方法。您需要将父实体映射到鉴别器列的正确值,将Kid实体映射到鉴别器列的其他值。这是关于EF中的TPH的blog post