Silverlight WCF Ria服务实体和InotifyProperty已更改

Silverlight WCF Ria服务实体和InotifyProperty已更改,silverlight,wcf-ria-services,inotifypropertychanged,Silverlight,Wcf Ria Services,Inotifypropertychanged,我遇到一个问题,即生成的Ria服务实体中的PropertyChanged事件没有针对所有属性引发 当我查看生成的代码(客户端)时,我可以看到我的实体是从实现INotifyPropertyChanged的Entity对象派生的。我还可以看到一些属性,比如Id属性,正在引发PropertyChanged事件,但有些没有 我没有使用任何T4模板,因此使用了默认模板 所以,我的问题是: 是否有可以设置的选项/属性,以便为生成的客户端实体的任何属性引发PropertyChanged事件 任何帮助都将不胜感

我遇到一个问题,即生成的Ria服务实体中的PropertyChanged事件没有针对所有属性引发

当我查看生成的代码(客户端)时,我可以看到我的实体是从实现INotifyPropertyChanged的Entity对象派生的。我还可以看到一些属性,比如Id属性,正在引发PropertyChanged事件,但有些没有

我没有使用任何T4模板,因此使用了默认模板

所以,我的问题是:

是否有可以设置的选项/属性,以便为生成的客户端实体的任何属性引发PropertyChanged事件

任何帮助都将不胜感激

编辑:

下面是一个属性示例,在自动生成的客户端文件中,不会引发PropertyChanged事件:

这是在服务器端模型中定义的:

    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.String FirstName
    {
        get
        {
            return _FirstName;
        }
        set
        {
            OnFirstNameChanging(value);
            ReportPropertyChanging("FirstName");
            _FirstName = StructuralObject.SetValidValue(value, false);
            ReportPropertyChanged("FirstName");
            OnFirstNameChanged();
        }
    }
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.Guid Id
    {
        get
        {
            return _Id;
        }
        set
        {
            if (_Id != value)
            {
                OnIdChanging(value);
                ReportPropertyChanging("Id");
                _Id = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Id");
                OnIdChanged();
            }
        }
    }
下面是一个属性的示例,在自动生成的客户端文件中,会引发PropertyChanged事件:

这是在服务器端模型中定义的:

    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.String FirstName
    {
        get
        {
            return _FirstName;
        }
        set
        {
            OnFirstNameChanging(value);
            ReportPropertyChanging("FirstName");
            _FirstName = StructuralObject.SetValidValue(value, false);
            ReportPropertyChanged("FirstName");
            OnFirstNameChanged();
        }
    }
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
    [DataMemberAttribute()]
    public global::System.Guid Id
    {
        get
        {
            return _Id;
        }
        set
        {
            if (_Id != value)
            {
                OnIdChanging(value);
                ReportPropertyChanging("Id");
                _Id = StructuralObject.SetValidValue(value);
                ReportPropertyChanged("Id");
                OnIdChanged();
            }
        }
    }

PropertyChanged事件封装在RaiseDataMemberChanged()中。您可以使用任何反编译器(.NET Reflector等)检查这一点

RAISEDatamberChanged和RAISEDatamberChanged方法用于通知框架关于更改跟踪和状态转换的更改

这两个属性是不同的,因为Id属性用Key属性修饰。我认为,由于与其他实体的关联以及不同的自动生成实现,具有此属性的属性得到特殊处理,因为不需要跟踪更改或更改时的转换


因此,在您的情况下,我认为还有另一个问题,为什么您的PropertyChanged事件(可能)没有被激发。

哪些属性不会引发PropertyChanged事件?添加一些代码来解释您的意思Jehof,谢谢您的回复。我只是按照你的要求添加了一些代码。你说得对。那么问题就出在别处了。谢谢你的帮助!