如何使POCO在DDD中使用复杂关系的Linq-to-SQL
当我的域模型不是表驱动时,我正在努力找到一种方法让POCO与Linq-to-Sql一起工作 - 这意味着我的域对象与数据库模式不匹配。
例如,在我的域层中,我有一个Appointment对象,它具有Recurrence类型的Recurrence属性。这是一个基类,有几个子类,每个子类都基于特定的重复模式。
在我的数据库中,当约会记录与其重现之间始终存在一对一的关系时,拥有单独的AppointmentRecurrences表是没有意义的。因此,Appointments表具有RecurrenceType和RecurrenceValue列。 RecurrenceType与RecurrenceTypes表具有外键关系,因为重复类型(模式)和Appointments表之间存在一对多关系。
除非有办法在Linq-to-Sql中创建这两个模型之间的正确映射,否则我将手动解决代码中的阻塞不匹配问题。
在使用规范模式查询数据库时,这变得更加困难。例如,如果我想返回当前约会的列表,我可以轻松创建一个使用以下表达式的Specification对象:
appt => appt.Recurrence.IsDue
。但是,这不会转换为Linq-to-SQL空间,因为Expression的源类型不是L2S识别的类型(例如,它不是L2S实体)。
那么如何在Linq-to-SQL中创建复杂的映射来支持我的域模型呢?
或者,在这种情况下是否有更好的方法来实现规范模式?我想过使用我的域对象和L2S实体(通过局部)实现的接口,但是这两个对象图的阻抗不匹配是不可能的。
建议?
没有找到相关结果
已邀请:
2 个回复
版萍层分
荤碗