1

我正在从头开始构建一个新系统并致力于应用程序的设计。我正在寻找可行的方法来为我的域对象建模。

关于项目的一些细节 - 这将是一个相当大的数据输入 WinForms 应用程序,集成到 ESRI ArcMap(一个 GIS 应用程序)中。数据访问必须通过 ArcMap 自己的数据访问图层 - 通过光标样式访问来检索和保存数据。这不是获取数据的问题,但据我所知,这排除了实体框架和 NHibernate 等 ORM 工具,因为我无法直接与数据库交互。

WinForms 应用程序将遵循 MVP监督控制器模式 - 视图将绑定到模型。演示者还将修改模型。所以 Domain 对象应该支持以下内容:

  • 变更通知
  • 更改跟踪。至少我想知道我的模型是否发生了变化。

到目前为止我的选择:

  1. 手写POCOS。+优点/缺点:
    • +应该可行
    • +可以容纳业务逻辑
    • +可绑定
    • - 大量的手工工作
      • - 通过 INotifyPropertyChange 接口更改通知。
      • - 通过 IsDirty 属性更改跟踪,必须手动维护。
  2. 由 POCO 包装的 ADO.NET 数据集。+优点/缺点:
    • +“免费”更改通知
    • +“免费”更改跟踪
    • +可绑定
    • - 感觉有点乱

我已经排除的:

  • 实体框架 - 我在 .net Framework 3.5 上,所以没有 Code First 支持。据我所知,处理域逻辑非常混乱 - 事件处理程序。

还有其他好的选择吗?也许代码生成(关于工具的任何建议?),一些框架?智慧之言,忠告?

4

2 回答 2

0

读这本书 比你必须知道的还要多

于 2014-09-18T14:54:32.980 回答
0

我的 POCO 只是“愚蠢”的数据传输对象,它们不包含任何业务逻辑。它们也不是我的模型,因为它们是另一组更接近我的 UI 的愚蠢对象。我只是在我的数据访问层中将充满数据的 DTO 泵入我的 DTO,将它们传递到我的服务层以处理业务逻辑,但它们仅被传输到我的演示者/控制器以通过模型将我需要的足够信息泵入我的 UI . 对于您的场景,我认为这会更合乎逻辑,因为您必须通过 ArcMap 的数据访问层。您可以将数据保存在表示层中并在那里进行更改跟踪。

于 2011-09-05T14:55:16.110 回答