У меня есть этот метод расширения для клонирования моих объектов LINQ To SQL:
public static T CloneObjectGraph<T>(this T obj) where T : class
{
var serializer = new DataContractSerializer(typeof(T), null, int.MaxValue, false, true, null);
using (var ms = new System.IO.MemoryStream())
{
serializer.WriteObject(ms, obj);
ms.Position = 0;
return (T)serializer.ReadObject(ms);
}
}
Но в то время как я несу объекты с не всеми загруженными ссылками, в то время как qyuerying с DataLoadOptions, иногда он выбрасывает исключение удаленного объекта, но я
не запрашивать ссылки, которые не загружены (ноль).
например. У меня есть Клиент со многими ссылками, и мне просто нужно сохранить в памяти адресную ссылку EntityRef <>, и я больше ничего не загружаю. Но пока я клонирую объект, это исключение вынуждает меня загрузить все ссылки EntitySet <> с объектом Customer, что может быть слишком много и замедлить скорость приложения.
Есть предложения?