我们正在使用ORM /领域建模工具,该工具将允许我们跨MSSQL数据库以“数据库优先”方法生成的多个项目/程序集中生成多个相关领域模型。我们需要一些帮助来确定哪些工具可以满足我们的需求。领域建模工具建议 - 跨项目关系和继承
的要求是:
跨项目的关系
- 我们的领域被分成许多模块,并为每个客户端(我们给源代码),我们不使用的所有模块和所以我们想要“拔掉”他们不需要查看或访问的所有逻辑。
- 例如,我们希望将共享数据(主要是通用查找信息)存储在它自己的常用程序集中。
- 我们不需要模型之间的双向关系(因为这会导致循环引用)。只有关系的孩子结束才会生成。
跨项目继承
- 与上述类似,我们希望能够以抽象的共同功能集成到基类中的一个域模型和继承他们。
- 注意:域之间的继承链接将受到限制,每个子域只有一个或两个。
- 注:这不应该的问题,而是我们使用“每个类型表”或“Class Table Inheritance”我们继承我们的关系模型(DB)架构
生成的类是:
- 与DataContract /数据成员属性标记
- 通知(通过INotifyPropertyChanged的实现方式)属性改变
- 具有部分开*的PropertyName *改变()方法(例如按LINQ到SQL和实体框架生成的对象)
- (理想,但不是必需的)相关集合类型应实现INotifyCollectionChanged。
,以支持(或有变通方法来支持)任何ORM工具的任何反馈这些标准将不胜感激!
注:工具我们已经看过了(但这并不排除他们完全):
- LightSpeed(可爱,但不轻易支持跨项目继承)。
- LLBLGen(复杂且包含所有内容,但使用
AsSeparateProjects
模式进行分组时似乎不支持跨模型关系,更不用说继承了)。 - 实体框架(我刚刚失去了...当设计师的故事splitting the domain across multiple models不是很好)。
当选择AsSeparateProjects时,LLBLGen Pro不支持通过组进行连接,因为该模型会导致多个vs.net项目。如果我们允许跨越组边界的连接(如您所请求的那样),那么vs.net项目最终会相互引用,这是不可能的,因为这会导致循环引用。 – 2012-05-18 07:58:34