将新对象添加到域数据源
Posted
技术标签:
【中文标题】将新对象添加到域数据源【英文标题】:Add new object to domain data source 【发布时间】:2013-02-14 12:27:04 【问题描述】:这让我发疯。我正在使用 Silverlight 5 业务应用程序并使用 WCF Ria 服务(域数据源)。在一个简单的 ChildControl 中,我加载了定义的(参见下面的代码)域数据源“ddsTerminKonfiguration”。查询方法返回一个通用的 IQueryable
有人对我的问题有想法或解决方案吗?
我的域数据源...
<riaControls:DomainDataSource Name="ddsTerminKonfiguration"
Width="0"
Height="0"
AutoLoad="False"
d:DesignData="d:DesignInstance my1:TerminKonfiguration, CreateList=true"
LoadedData="ddsTerminKonfiguration_LoadedData"
SubmittedChanges="ddsTerminKonfiguration_SubmittedChanges"
QueryName="GetTerminKonfigurationQuery">
<riaControls:DomainDataSource.DomainContext>
<my:RRPDomainContext />
</riaControls:DomainDataSource.DomainContext>
<riaControls:DomainDataSource.QueryParameters>
<riaControls:Parameter ParameterName="param01" />
<riaControls:Parameter ParameterName="param02" />
<riaControls:Parameter ParameterName="param03" />
<riaControls:Parameter ParameterName="param04" />
</riaControls:DomainDataSource.QueryParameters>
</riaControls:DomainDataSource>
命名空间“my”引用“Project”.Web.Services,“my1”引用“Project”.Web.Models。
查询方法...
public IQueryable<TerminKonfiguration> GetTerminKonfiguration(string param01, string param02, int param03, int param04)
return this.ObjectContext.TerminKonfiguration.Where(d => (d.MandantenNr == param01) && (d.WorkflowNr == param02) && (d.WfAufgabeId == param03) && (d.WfAufgabeIdGlobal == param04));
sn-p,我在这里尝试将新对象添加到 DataView ...
if (this.ddsTerminKonfiguration.DataView.Count == 0)
TerminKonfiguration tmpConfig = new TerminKonfiguration();
/*
define the new object
*/
this.ddsTerminKonfiguration.DataView.Add(tmpConfig); // problematic line
this.ddsTerminKonfiguration.SubmitChanges();
【问题讨论】:
【参考方案1】:DataView 是 DataView 这就是原因。 DataView 是数据的视图。
使用数据源,您可以过滤订单等,然后您会看到对 DataView 的影响。
this.ddsTerminKonfiguration.DataView.Add is not a valid operation.
http://msdn.microsoft.com/en-us/library/ee707363(v=vs.91).aspx
基本用法是
<Grid x:Name="LayoutRoot" Background="White">
<riaControls:DomainDataSource x:Name="source" QueryName="GetProductsByColor" AutoLoad="true">
<riaControls:DomainDataSource.DomainContext>
<domain:ProductDomainContext />
</riaControls:DomainDataSource.DomainContext>
<riaControls:DomainDataSource.QueryParameters>
<riaData:Parameter ParameterName="color" Value="Black" />
</riaControls:DomainDataSource.QueryParameters>
</riaControls:DomainDataSource>
<data:DataGrid ItemsSource="Binding Data, ElementName=source" />
</Grid>
如您所见,DataGrid 绑定到 Data 而不是 DataView。
Binding Data, ElementName=source"
【讨论】:
感谢您的回复。那么,只查询一个项目/对象并且在不绑定到 DataGrid 的情况下工作是不寻常的吗? ;-) 也许我可以在没有域数据源的情况下使用 InvokeOperation 来完成它。无论如何:感谢您的提示。 :-) DomainDataSource 非常适合分页、排序和过滤操作。如果您只是将一个项目添加到您的上下文中,您应该将它添加到您的上下文中。为你 RRPDomainContext.TerminKonfigurations.Add(...以上是关于将新对象添加到域数据源的主要内容,如果未能解决你的问题,请参考以下文章