Вычисляемое поле LinqToSql OnPropertyIDChanged

У меня есть частичный класс для расширения одного из моих классов LinqToSql. В этом частичном классе у меня есть следующее вычисляемое поле.

    public bool IsInCluster
    {
        get
        {
            return Cluster != null;
        }
    }

Чтобы столбец сетки, привязанный к этому полю, обновлялся автоматически, я реализовал следующий частичный метод.

    partial void OnClusterIDChanged()
    {
        SendPropertyChanged("IsInCluster");
    }

Однако, когда я обновляю свойство Cluster, как показано в следующем коде, метод OnClusterIDChanged не вызывается:

частная недействительная ExecCreateClusterCommand()
{

        var cluster = new Cluster()
        {
            ID = Guid.NewGuid(),
            MailService = AppState.CurrentMailService
        };

        App.DataContext.Clusters.InsertOnSubmit(cluster);

        foreach (DeliveryPoint deliveryPoint in SelectedDeliveryPoints)
        {
            deliveryPoint.Cluster = cluster;
        }

        App.DataContext.SubmitChanges();      

}

Я успешно использовал эту технику с другими ненавигационными свойствами, связанными с вычисляемыми полями. Есть ли способ заставить это работать?


person daveywc    schedule 10.05.2012    source источник


Ответы (2)


В вашем сеттере для Cluster вызовите OnClusterIDChanged, если состояние изменилось.

person leppie    schedule 10.05.2012
comment
В моих сгенерированных LinqToSQL классах нет метода расширения для установщика для Cluster — только для OnClusterIDChanged. - person daveywc; 11.05.2012

Единственное решение, которое я смог найти для этого, состояло в том, чтобы создать общедоступный метод в классе DeliveryPoint, позволяющий мне вызывать SendPropertyChanged для требуемого поля (свойство навигации):

        public void CallSendPropertyChanged(string propertyName)
        {
            SendPropertyChanged(propertyName);
        }
person daveywc    schedule 10.05.2012