为什么LINQ To SQL代理类有时会实现INotifyPropertyChanging和INotifyPropertyChanged

时间:2010-11-29 20:54:31

标签: linq-to-sql

我正在使用“对象关系设计器”为我的SQL数据库表创建实体。

问题:为什么有些类会实现INotifyPropertyChangingINotifyPropertyChanged而其他类不实现?

当我想使用未实现INotifyPropertyChangingINotifyPropertyChanged的LINQ To SQL实体更新数据库中的某些数据时出现问题。

实体辩护:

 [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.user_to_user")]
public partial class user_to_user
{       
    private int _user_id1;

    private int _user_id2;

    private string _relation_type;

    public user_to_user()
    {
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_user_id1", DbType="Int NOT NULL")]
    public int user_id1
    {
        get
        {
            return this._user_id1;
        }
        set
        {
            if ((this._user_id1 != value))
            {
                this._user_id1 = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_user_id2", DbType="Int NOT NULL")]
    public int user_id2
    {
        get
        {
            return this._user_id2;
        }
        set
        {
            if ((this._user_id2 != value))
            {
                this._user_id2 = value;
            }
        }
    }

    [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_relation_type", DbType="VarChar(50) NOT NULL", CanBeNull=false)]
    public string relation_type
    {
        get
        {
            return this._relation_type;
        }
        set
        {
            if ((this._relation_type != value))
            {
                this._relation_type = value;
            }
        }
    }
}

的DataContext:

private Table<user_to_user> friendsTable = new BSocialDBDataContext().GetTable<user_to_user>();

然后我尝试:

public void FriendshipOffer(int visitor_id, int owner_id)
    {
        var relation = friendsTable.FirstOrDefault(u => (u.user_id2 == visitor_id && u.user_id1 == owner_id));
        relation.relation_type = "friend";

        friendsTable.Context.SubmitChanges();
    }

1 个答案:

答案 0 :(得分:1)

实体密钥是否包含在linq语句的返回数据中?