我正在学习SL4 WCF / RIA LOB。我有一个SQL视图,将当前库存作为IQueryable返回。由于它是一个SQL视图,它被标记为只读,这是我想要/没有更改数据库。
在前端(视图),我想用信息填充DataGrid,但允许它在用户选择可用库存时可编辑。在我看来,DataGrid的绑定应该是我可以在内存中操作的不同集合。
目前我有一个典型的DDS从后面拉取查询:
<riaControls:DomainDataSource AutoLoad="True" LoadedData="qryInventoryDds_LoadedData"
Name="qryInventoryDds" QueryName="GetQryInventoriesQuery" >
<riaControls:DomainDataSource.DomainContext>
<my:DomainService1 />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
如果有人可以指导我如何“复制”这个e.Entities等,那么我可以操纵它然后绑定它我会非常感激。
我已经搜索了几天,但实际上找不到一些好的例子。
非常感谢!
答案 0 :(得分:0)
试试这个。
<data:DataGrid x:Name="myDataGrid" ItemsSource="{Binding ElementName=qryInventoryDds, Path=Data}" RowDetailsVisibilityMode="VisibleWhenSelected">
答案 1 :(得分:0)
我所做的是迭代返回的集合,创建一个不属于domaincontext的新ObservableCollection。我相信这被称为深层复制品。
似乎没有方法可以“轻松”从SQL视图中检索可编辑集合,因为VS将所有业务对象属性标记为主键。我已阅读/尝试过一些策略,比如在SQL视图中标记所有字段COALESCE(propery,null),但这对我不起作用。还有一些人尝试编辑基础模型XML,但这必须在视图的每次更改时完成,这是非常有问题的。
如果有人知道更好的解决方案,我会全力以赴。
感谢。