Добавить новый объект в источник данных домена

Это сводит меня с ума. Я работаю в бизнес-приложении Silverlight 5 и использую службы WCF Ria (источник данных домена). В простом ChildControl я загружаю определенный (см. Код ниже) источник данных домена "ddsTerminKonfiguration". Метод запроса возвращает общий список IQueryable. Если в этом списке нет элементов (...DataView.Count == 0), я хочу добавить новый объект "TerminKonfiguration". Когда я пытаюсь выполнить ddsTerminKonfiguration.DataView.Add(new TerminKonfiguration()); Я сталкиваюсь с ошибкой "Добавить" не поддерживается этим ICollectionView" (я знаю только немецкое сообщение об ошибке... поэтому я надеюсь, что все могут понять мой перевод:-D). Сопоставимые фрагменты кода в этом проекте (написанные другими разработчиками) работают должным образом... и я не знаю, как решить эту проблему.

У кого-нибудь есть идея или решение моей проблемы?

Источник данных моего домена...

<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));
    }

Фрагмент, где я пытаюсь добавить новый объект в 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}"
Другие вопросы по тегам