我有两个对象。其中一个有另一个目标。
User
-----
ID
Name
Surname
UserAddress
------------
ID
UserID
Address
当我更改第一个(用户)时,第二个(UserAddress)中的此对象不会更改。我该如何解决?
我正在向hashtable添加对象。当我需要列出我的数据时,我使用这个哈希表。当我更新对象时,我在哈希表中找到了这个对象的索引。之后我更新了。但是这个隐藏在第二个对象中的对象没有更新。
我从数据库中获取userAddress-object用户地址信息。
_userAddress= new userAddress();
_userAddress.ID = Convert.ToInt32(d["ID"]);
_userAddress.Address= d["Address"].ToString();
////I am taking user object here. _userAddress.UserID= (Address)_userDa.Detail(Convert.ToInt32(d["UserID"]), conStr);
当我更改User对象时,userAddress对象中的相同用户对象不会更改。
答案 0 :(得分:0)
除非两个类彼此有引用,否则您不太可能看到更改。你可以有类似的东西 -
class User
{
UserAddress Address {get;set;}
//Other properties
}
User u = new User();
u.Address = new UserAddress();
同样,UserAddress应该引用User对象而不是ID。
答案 1 :(得分:0)
看起来您正在尝试将RDBMS行为应用于对象。如果UserID字段在C#代码之外没有任何用处,则应删除它。
无论如何,将User作为属性添加到UserAddress类。从UserAddress中删除UserId。
答案 2 :(得分:0)
听起来你正在以关系数据库的方式思考。
您的User对象应该具有UserAddress对象作为属性(或者它们的集合,假设允许多个地址 - 因此需要关系)。
您的数据访问实现应该处理基础表(或您正在使用的任何存储机制)的更新
答案 3 :(得分:0)
ID是什么类型的?
如果是值类型,则无法正常工作。
如果是引用类型,请确保您引用了相同的ID对象。
更好的方法是引用 - 用户> UserAddress UserAddress->用户
然后你可以这样做 - userAddress.User.ID 或user.ID 获得相同的ID。