Скопируйте один объект в другой - PullRequest
1 голос
/ 16 марта 2010

У меня есть 2 таблицы, user и userprofile. Таблица userprofile имеет много полей, похожих на пользовательскую таблицу. Что мне нужно сделать, так это нажать кнопку, чтобы скопировать все поля таблицы пользователя в таблицу userprofile.

How can I do that?

Ответы [ 3 ]

4 голосов
/ 17 марта 2010

Можете ли вы создать конструктор в UserProfile, который принимает экземпляр User в качестве параметра и делает это там? Не уверен, что это лучший подход или если это нарушает хороший дизайн. Существует утилита под названием AutoMapper , которая хороша для определения связей между двумя внешне не связанными объектами, вы можете проверить это, потому что это довольно круто.

2 голосов
/ 17 марта 2010

Возможно, я не до конца понимаю ваш запрос. Но если у вас есть две таблицы, такие как

DataTable user;
DataTable userProfiles;

И вы хотите, чтобы пользовательские профили содержали те же поля (или, скорее, те же столбцы), что и таблица1, которую вы можете использовать

userProfiles= user.Clone();  // This will copy the schema of user table
userProfiles= user.Copy();   // This will copy the schema AND data of user table 

Теперь, если вы хотите скопировать определенные строки, вы можете сделать следующее.

DataRow dr;
userProfiles= user.Clone();   // Do this first to create the schema.
foreach(DataRow row in user.Rows)
{
   if(...) // code to determine if you want to add this row
   {
      userProfiles.Rows.Add(row);  // This will add the same row from user table to userProfiles; Or you could create a new row using the 'dr' above and copy the data to provide a new DataRow
   }
}
0 голосов
/ 17 марта 2010

Возможно, это слишком упрощенно, но что вам мешает

UserProfile profile = new UserProfile();
profile.Name = UserModel[0].Name;
profile.OtherProperty = UserModel[0].OtherProperty;
...
DataServices.Save(profile);

Если это проблема инкапсуляции и вы не можете изменить эти свойства, то ответ Роба о создании конструктора, который принимает объект User, звучит уместно.

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