Как глубоко клонировать взаимосвязанные объекты в C#?

Вам нужно просто ВНУТРЕННЕЕ СОЕДИНЕНИЕ :

select s.student_name, c.country_name, p.province_name, d.district_name 
from student s
  join country c on s.country_id = c.country_id
  join province p on p.province_id = s.province_id
  join district d on d.district_id = s.district_id;

Предполагая, что country_id, province_id и district_id являются первичными ключами в соответствующих таблицах.

5
задан JasonMArcher 8 July 2015 в 04:38
поделиться

5 ответов

Не изящное решение наверняка, но это не редко для использования словаря (или hashmap). Одно из преимуществ - то, что hashmap имеет постоянное время поиска, таким образом, скорость действительно не страдает здесь.

2
ответ дан 14 December 2019 в 13:47
поделиться

Не то, чтобы я знаком с C#, но обычно любой тип проверки графика для своего рода обработки потребует, чтобы справочная таблица прекратила обрабатывать объект из-за циклических ссылок. Таким образом, я думал бы, что необходимо будет сделать то же здесь.

2
ответ дан 14 December 2019 в 13:47
поделиться

Решение для словаря, которое Вы предложили, является лучшим, я знаю о. Для оптимизации далее Вы могли использовать объект. GetHashCode () для получения хеша для объекта и использования, что как ключ словаря. Должно быть быстрым, если Вы не говорите об огромных деревьях объектов (10-е к 100 с тысяч объектов).

2
ответ дан 14 December 2019 в 13:47
поделиться

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

0
ответ дан 14 December 2019 в 13:47
поделиться

Другое возможное решение, которое Вы могли исследовать, сериализирует объекты в поток и затем восстанавливает их от того же самого потока в новые экземпляры. Это часто творит чудеса, когда все остальное кажется ужасно замысловатым и грязным.

Marc

0
ответ дан 14 December 2019 в 13:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: