Ste*_*ard 3 c# linq silverlight orm
我正在开发一个具有所有功能和限制的Silverlight项目.这是对以前产品的更新.为了快速推向市场,其目的是尽可能多地维护后端(Web服务,数据库等).如果没有别的办法,我们要求只触及后端.我们主要专注于重写前端.很快就会有一个重要的行业会议,我们想要展示产品的早期外观.在官方发布之前可能还有一段时间做一些重新工作,但后端可能需要等到V2.
好的,所以我要做的就是使用MVVM模式和我负责的前端的数据绑定(MVVM模式由上面决定).我有一个pre-existig Web服务,提供一些XML.该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>
Run Code Online (Sandbox Code Playgroud)
所以,我的问题,因为我想使用MVVM模式将其绑定到UI,在我看来,我需要将其转换为自定义对象.正如您所看到的,有许多"Entry"项,MainEntry(ME)和Subentries(本例中为M1或M2),这些都将包含某些其他节点(例如,它们都将具有IE节点),它们可以包含0个或更多其他节点类型(例如,它们可以包含或不包含一个或多个NM节点,或者它们可以包含或不包含一个CF节点).Whihc意味着(至少对我而言)我无法直接绑定到XML,因为:
因此,我正在尝试理解将此XML转换为可绑定对象的最佳方法,在我看来,这意味着将此XML转换为模型的对象,然后在该模型上覆盖视图模型.
这可以通过LINQ to XML查询轻松完成,还是我真的进入了ORM的领域,如NHibernate或Entity Framework(请不要讨论WHICH ORM的神圣战争)?
我刚刚成立,我将使用的UI控件是什么,我需要相当快速演示我的经理如何我要处理的翻译.
那么,真正的问题:
我需要一个ORM吗?
不.您没有映射到关系源,因此对象关系映射器无济于事.
使用Linq to Xml完成它.
public CustomClass TranslateME(XElement source)
{
CustomClass result = new CustomClass();
result.Words = (int) source.Attribute("Words");
result.Score = (int) source.Attribute("Score");
XAttribute highScore = source.Attribute("HighScore");
result.HighScore = (highScore == null) ? 0 : (int) highScore;
result.NMs = source
.Elements("NM")
.Select(x => x.Value)
.ToList();
result.IE = source
.Element("IE").Value;
result.SubEntries = source
.Elements("M1")
.Select(x => TranslateM1(x))
.ToList();
return result;
}
Run Code Online (Sandbox Code Playgroud)