Как уведомить EntityChangeSet в DomainServices Silverlight

Во-первых, мой английский слабый, надеюсь, вы понимаете! Я разрабатываю приложение Silverlight с использованием DomainServices(DomainContext Class - Namespace: System.ServiceModel.DomainServices.Client) для получения и обновления данных. У меня есть некоторые свойства:

DomainContextVBHS _Service = new DomainContextVBHS();


public int AddedEntitiesCount
{
    get{ return _Service.EntityContainer.GetChanges().AddedEntities.Count; }
}

public int ModifiedEntitiesCount
{
    get{ return _Service.EntityContainer.GetChanges().ModifiedEntities.Count; }
}
public int RemovedEntitiesCount
{
    get{ return _Service.EntityContainer.GetChanges().RemovedEntities.Count; }
}

Как я могу уведомить их об интерфейсе, когда _Service получит какие-либо изменения?

1 ответ

Решение

Обновление: пример кода здесь: https://dl.dropboxusercontent.com/u/8424800/StackruHasChanges.zip

Я быстро взглянул на источник, используя декомпилятор. Официального пути нет. К счастью, если вы хотите прослушать все события изменения свойств во всех наборах внутренних сущностей, вы сможете достичь того, чего хотите.

Пример открытого класса: INotifyPropertyChanged {

    SampleDomainContext _Service = new SampleDomainContext();

    public Sample()
    {
        _Service.Load(_Service.GetCustomersQuery());

        _Service.Customers.PropertyChanged += PropChanged;
        //_Service.Orders.PropertyChanged += PropChanged;
        // etc.
    }

    public int AddedEntitiesCount
    {
        get { return _Service.EntityContainer.GetChanges().AddedEntities.Count; }
    }

    public int ModifiedEntitiesCount
    {
        get { return _Service.EntityContainer.GetChanges().ModifiedEntities.Count; }
    }
    public int RemovedEntitiesCount
    {
        get { return _Service.EntityContainer.GetChanges().RemovedEntities.Count; }
    }

    public void PropChanged(object sender, PropertyChangedEventArgs e)
    {
        var pc = this.PropertyChanged;
        if (pc != null)
        {
            pc(this, new PropertyChangedEventArgs("AddedEntitiesCount"));
            pc(this, new PropertyChangedEventArgs("ModifiedEntitiesCount"));
            pc(this, new PropertyChangedEventArgs("RemovedEntitiesCount"));
            // etc
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;


}
Другие вопросы по тегам