我正在从头开始构建一个新系统并致力于应用程序的设计。我正在寻找可行的方法来为我的域对象建模。
关于项目的一些细节 - 这将是一个相当大的数据输入 WinForms 应用程序,集成到 ESRI ArcMap(一个 GIS 应用程序)中。数据访问必须通过 ArcMap 自己的数据访问图层 - 通过光标样式访问来检索和保存数据。这不是获取数据的问题,但据我所知,这排除了实体框架和 NHibernate 等 ORM 工具,因为我无法直接与数据库交互。
WinForms 应用程序将遵循 MVP监督控制器模式 - 视图将绑定到模型。演示者还将修改模型。所以 Domain 对象应该支持以下内容:
- 变更通知
- 更改跟踪。至少我想知道我的模型是否发生了变化。
到目前为止我的选择:
- 手写POCOS。+优点/缺点:
- +应该可行
- +可以容纳业务逻辑
- +可绑定
- - 大量的手工工作
- - 通过 INotifyPropertyChange 接口更改通知。
- - 通过 IsDirty 属性更改跟踪,必须手动维护。
- 由 POCO 包装的 ADO.NET 数据集。+优点/缺点:
- +“免费”更改通知
- +“免费”更改跟踪
- +可绑定
- - 感觉有点乱
我已经排除的:
- 实体框架 - 我在 .net Framework 3.5 上,所以没有 Code First 支持。据我所知,处理域逻辑非常混乱 - 事件处理程序。
还有其他好的选择吗?也许代码生成(关于工具的任何建议?),一些框架?智慧之言,忠告?