我们正在寻找一个 ORM/域建模工具,该工具将允许我们跨多个项目/程序集生成多个相关的域模型,这些项目/程序集以“数据库优先”的方法从我们的 MSSQL 数据库生成。我们需要一些帮助来确定哪些工具可以满足我们的需求。
要求是:
跨项目关系
- 我们的域被分成许多模块,并且对于每个客户(我们向其提供源代码)我们不使用所有模块,因此我们希望“拔掉”他们不需要查看或访问的所有逻辑.
- 例如,我们想在它自己的通用程序集中存储共享数据(主要是通用查找信息)。
- 我们不需要模型之间的双向关系(因为这会导致循环引用)。只会生成关系的子端。
跨项目继承
- 与上面类似,我们希望能够将通用功能抽象为一个域模型中的基类并继承它们。
- 注意:域之间的继承链接将受到限制,每个子域只有一个或两个。
- 注意:这无关紧要,但我们使用“每个类型的表”或“类表继承”来建模我们在关系(DB)模式中的继承
生成的类是:
- 标有 DataContract/DataMember 属性
- 通知属性更改(通过 INotifyPropertyChanged 实现)
- 具有部分 On*PropertyName*Changed() 方法(例如,根据 Linq to SQL 和实体框架生成的对象)
- (理想,但不是必需的)相关集合类型应实现 INotifyCollectionChanged。
任何支持(或有支持的变通方法)这些标准的 ORM 工具的任何反馈都将不胜感激!
注意:我们看过的工具(但这并不能完全排除它们):
- LightSpeed(可爱,但不支持轻松跨项目继承)。
- LLBLGen(复杂且包罗万象,但在使用
AsSeparateProjects
模式进行分组时,它似乎不支持跨模型关系,更不用说继承了)。 - 实体框架(我刚刚迷路了......将域拆分为多个模型时的设计师故事不是很好)。