我有这两种类型的用户:父母和孩子,都是用户,具有相同的属性,但方法不同。
我创建了Base User类和2类:Parent和Kid,都继承了用户基类,每个类都有不同的方法。
用户类是部分类,因为实体框架模型具有相同的类,因为数据库只有Users表,没有父母或孩子。
现在,当我从Parent类创建一个对象,并尝试使用ado实体框架“AddObject("Users", (User)_parent)
”插入数据库时,它给我一个错误,我正在插入父级,并且没有任何此类标识插入。
那么,我的域驱动设计是否存在问题,或者我应该在实体框架中编辑某些内容?
答案 0 :(得分:2)
这称为Table Per Hiearchy(TPH)。这意味着您要使用一个表来存储从基本实体继承的多个实体。在您的情况下,它有点具体,因为继承的实体没有任何其他属性来存储。
您需要将Parent和Kid类添加到实体模型(从User实体派生)。在数据库中需要一个额外的列来区分Parent和Kid - 这是EF在从User表执行查询时知道要创建哪个实体的唯一方法。您需要将父实体映射到鉴别器列的正确值,将Kid实体映射到鉴别器列的其他值。这是关于EF中的TPH的blog post。