【发布时间】:2023-03-16 22:08:01
【问题描述】:
我正在从事一个 Silverlight 项目,该项目具有所需的所有功能和限制。这是对以前产品的更新。为了快速推向市场,其目的是尽可能多地维护后端(Web 服务、数据库等)。如果没有其他方法,我们要求它只接触后端。我们将主要专注于重写前端。很快就会有一个重要的行业会议,我们将在其中演示产品的早期外观。在正式发布之前可能有时间做一些返工,但后端可能需要等到 V2。
好的,所以我正在尝试将 MVVM 模式与我负责的前端的数据绑定一起使用(MVVM 模式由上面规定)。我有一个提供一些 XML 的预先存在的 Web 服务。该 XML 的示例如下所示:
<CODEBOOKINDEX>
<ME Words="1" Score="25" Highscore="1">Main Entry Item
<NM>attack</NM>
<NM>cardiac</NM>
<NM>chest</NM>
<NM>effort</NM>
<NM>heart</NM>
<NM>pectoris</NM>
<NM>syndrome</NM>
<NM>vasomotor</NM>
<IE>413.9</IE>
<M1 Words="1" Score="25">An M1 Item (Same as ME, just first level Child)
<IE>557.1</IE>
</M1>
<M1 Words="1" Score="25">Another M1 Item
<IE>443.9</IE>
<M2 Words="1" Score="25">An M2 Item (again same as ME, just a child of an M1 item)
<CF>Arteriosclerosis,extremities</CF>
<IE>440.20</IE>
</M2>
</M1>
</ME></CODEBOOKINDEX>
所以,我的问题是,由于我想使用 MVVM 模式将此绑定到 UI,因此在我看来,我需要将其转换为自定义对象。如您所见,有许多“条目”项,MainEntry (ME) 和子条目(本例中为 M1 或 M2),它们都将包含某些其他节点(例如,它们都将具有 IE 节点),它们可以包含 0 个或多个其他节点类型(例如,它们可以包含或不包含一个或多个 NM 节点,或者它们可以包含或不包含一个 CF 节点)。 Whihc 意味着(至少对我而言)我不能真正直接绑定到 XML,因为:
- 它违反了 MVVM 模式(我可能会为演示证明这一点,但以后必须重构)。
- 我无法真正将 UI 元素绑定到给定项目可能不存在的 XML 节点。
- 在某些情况下,我必须将一个集合(例如一堆 NM 项目)转换为格式化字符串以用于显示目的,我认为这不是一件小事。
所以,我正在尝试了解将此 XML 转换为可绑定对象的最佳方法,在我看来,这意味着将此 XML 转换为模型的对象,然后在该模型上覆盖视图模型。
这可以通过 LINQ to XML 查询轻松完成,还是我真的进入了诸如 NHibernate 或实体框架之类的 ORM 领域(请不要对哪个 ORM 进行圣战)?
我刚刚确定了我将为 UI 使用的控件,我需要尽快向我的经理演示如何我将处理翻译。
所以,真正的问题:
- 我是否需要 ORM?我不反对使用它们,但我希望 XAP 文件的大小保持较小,并希望限制我(和我的队友)需要一次性学习的新技术数量。
- 如果我确实需要一个,我可以减小文件大小吗?我可以使用 EF 或 NHibernatge 快速增加并很快展示一个模型吗?我说的是一周的时间,有SOMETHING,它将从网络服务中获取输出并将其转换为对象,即使最初的地图并不完美,我也需要展示一些进展。
- 是否还有其他我认为可能更容易的选项,限制修改现有代码(即 Web 服务)和产品可用结果的需要?
【问题讨论】:
标签: c# linq silverlight orm