面向对象问题C#

时间:2011-01-30 22:11:51

标签: c# asp.net object oop

我有两个对象。其中一个有另一个目标。

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对象中的相同用户对象不会更改。

4 个答案:

答案 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。