所以我正在考虑在这个 asp.net 项目上使用 LLBLGen Pro 和 Spring.Net,使用服务层将业务逻辑与数据存储分离。我也在考虑在 UI 层使用 PONOS,现在我的问题是:
我应该将丰富的 LLBLGen 实体对象映射到数据层还是服务层中的 Ponos?如果我在数据层中执行此操作,那么我会在服务层中丢失它们所有的丰富功能。还是我应该跳过到 Ponos 的映射并一直使用 LLBLGen 实体?如果以后会更难测试吧?
有人可以告诉我这两种方法的优缺点吗?
谢谢
所以我正在考虑在这个 asp.net 项目上使用 LLBLGen Pro 和 Spring.Net,使用服务层将业务逻辑与数据存储分离。我也在考虑在 UI 层使用 PONOS,现在我的问题是:
我应该将丰富的 LLBLGen 实体对象映射到数据层还是服务层中的 Ponos?如果我在数据层中执行此操作,那么我会在服务层中丢失它们所有的丰富功能。还是我应该跳过到 Ponos 的映射并一直使用 LLBLGen 实体?如果以后会更难测试吧?
有人可以告诉我这两种方法的优缺点吗?
谢谢
使用不带映射的 LLBLGen 实体的好处是,您可以直接从数据库模式(甚至在 LLBL 3.x 中没有数据库模式)生成实体,因此您可以在几分钟内拥有一个非常有用的实体模型。缺点是你的实体继承自 LLBL 框架类,这使得它们更难用行为/业务逻辑来丰富。如果您通常将您的业务逻辑设计为一组服务,那么这不会造成问题。
在这种情况下,我不认为测试是一个问题,因为我通常将实体视为“贫血”数据对象,并且我通常不会模拟此类对象(没有真正的理由这样做)。
映射到 POCO 的好处是您可以完全控制域/实体/DTO 对象的设计,并且它们可以像您想要的那样丰富或贫乏。缺点是您必须设计和编码 POCO 类和映射,并且(如您所说)您将失去一些功能,例如内置于 LLBL 实体中的更改跟踪。
我个人选择使用生成的实体对象,除非我有很好的理由不这样做。