Если это тест, вы можете делать что угодно, и вам не нужно привязываться к какому-либо архитектурному подходу, например, к хранилищу. Ваш репозиторий, вероятно, получает контекст как инъекцию, чтобы вы могли иметь к нему доступ. Другое дело, что я не верю, что AutoMapper создаст отслеживаемую сущность.
Один из способов сделать копию класса - использовать сериализацию, которая по умолчанию сохраняет только открытые поля (сериализация Xml или сериализация DataContract). Сериализация объекта и десериализация его обратно в новый экземпляр. Сериализация сохранит весь граф объектов, а десериализованный граф объектов будет отсоединен. Просто учтите, что этим сериализациям не нравятся циклические ссылки в графе объектов (свойство навигации от A до B и от B до A от циклов). Сериализация также слишком агрессивна, поэтому она может проходить по графику более глубоко, чем вы хотите - это может быть особенно опасно во многих отношениях.
Наилучшим подходом является использование интерфейса ICloneable
и реализация Clone
или определение методов поддержки, которые будут выполнять различные клоны с необходимой глубиной.
Здесь - это другой подход для клонирования EntityObject
сущностей. Это сложный код, особенно часть с Reflection.Emit
. Но это не поможет вам, потому что сначала используется код POCO.