Объектно-ориентированная задача C # - PullRequest
0 голосов
/ 31 января 2011

У меня есть два объекта. У одного из них есть другой объект.

User     
-----
ID
Name
Surname

UserAddress
------------
ID
UserID
Address

Когда я меняю первый (Пользователь), этот объект во втором (Пользовательский адрес) не изменяется. Как я могу это исправить?

Я добавляю объекты в хеш-таблицу. Когда мне нужно перечислить свои данные, я использую эту хеш-таблицу. Когда я обновляю объект, я нахожу индекс этого объекта в хеш-таблице. После этого я обновляюсь. Но этот объект, который скрыт во втором объекте, не обновляется.

Я принимаю информацию об адресе пользователя 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 голосов
/ 31 января 2011

Какой тип является идентификатором?

Если это тип значения, он не может работать.

Если это ссылочный тип, убедитесь, что у вас есть ссылка на тот же объект идентификатора.

Лучший подход - иметь ссылки: User-> UserAddress UserAddress-> User

Тогда вы можете просто сделать - userAddress.User.ID или user.ID, чтобы получить тот же идентификатор.

0 голосов
/ 31 января 2011

Похоже, вы пытаетесь применить поведение RDBMS к объектам.Если поле UserID не предлагает никакой полезной цели вне кода C #, вы должны удалить его.

В любом случае добавьте User как свойство в класс UserAddress.Удалить UserId из UserAddress.

0 голосов
/ 31 января 2011

Звучит так, будто вы думаете по-реляционному БД.

Ваш объект User должен иметь либо объект UserAddress в качестве свойства (или их коллекцию, если допускается несколько адресов - отсюда и необходимость в отношениях).

Ваша реализация доступа к данным должназатем позаботьтесь об обновлениях базовых таблиц (или любого используемого вами механизма хранения)

0 голосов
/ 31 января 2011

Если 2 класса не имеют ссылки друг на друга, вы вряд ли увидите изменения.Вы можете иметь что-то вроде -

class User
{
   UserAddress Address {get;set;}
   //Other properties
}

User u = new User();
u.Address = new UserAddress();

Аналогично, UserAddress должен иметь ссылку на объект User, а не только идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...