【发布时间】:2011-06-05 10:49:57
【问题描述】:
我正在尝试综合我一直在阅读的有关领域驱动设计和实体框架模型优先功能的内容。我有一个现有的数据库,但我在创建域模型时忽略了它。我最终得到了一个 Company 类和一个 Person 类。在模型中,我不需要两个类之间的关系。但是,我确实需要一种方法来获取公司人员的名单。我决定在我的 PersonRepository 上有一个 GetPeople(int companyId) 方法,这样我就不必有一个 Company 实例来获取这个列表。类如下所示:
公司类
整数 ID
字符串名称
人员类
整数 ID
字符串名字
字符串姓氏
PersonRepository
IEnumerable<Person>GetPeople(int companyId) { ? }
现在到数据库/EF 部分。在数据库中,我有一个基本的外键关系,所以表看起来就像上面的类,除了 Persons 表还有一个 CompanyId 字段。
由于我没有在域模型中添加任何对这个数据库关系的引用,所以EF不知道这些类是相关的,所以当我去写GetPeople方法的时候,我不能这样做......
public IEnumerable<Person> GetPeople(int companyId) {
return MyDbContext.Persons.Where(c => c.CompanyId == companyId);
}
...因为领域模型中的 Person 类没有 CompanyId 属性。我总是可以添加该属性,但是持久性机制现在正在影响我的域模型,这似乎是您希望通过模型优先方法避免的。
添加该属性是否会错误地侵入域模型,还是因为它仍然只是一个 POCO 而不是不正确的侵入?
【问题讨论】:
标签: c# entity-framework domain-driven-design