Отключение сущностей EF от контекста БД, удаление их связей? - PullRequest
1 голос
/ 30 ноября 2011
    public List<PRODUCT> GetProductsByProductcategory(decimal productCategoryKey)
    {
        DBEntities ctx = new DBEntities();
        List<PRODUCT> productList = ctx.PRODUCT.Where(p => p.PRODUCT_CATEGORY_KEY == productCategoryKey).ToList();
        return productList;
    }

Есть ли способ отсоединить каждую PRODUCT-сущность от экземпляра ctx, удалив, таким образом, их отношения с другими сущностями? Или любой другой умный способ удалить связанные объекты. Моя проблема в том, что я не могу сериализовать сущности с отношениями. Это приводит к исключению циклической ссылки. Мое текущее решение состоит в том, чтобы использовать ctx.ContextOptions.ProxyCreationEnabled = false, который работает. Но если я сделаю это, я не получу ленивую загрузку. Помощь очень ценится. Спасибо

1 Ответ

0 голосов
/ 30 ноября 2011

Поскольку вы сериализуетесь в JSON, я бы рекомендовал использовать библиотеку Json.NET от Джеймса Ньютона-Кинга .Вы можете отключить отношения от сериализации.Ниже приведен метод сериализации, который я использую с выключенным ReferenceLooping.

 public static string Serialize(object model)
 {
     var settings = new JsonSerializerSettings
                     {
                        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                     };
     return JsonConvert.SerializeObject(model, Formatting.None, settings);
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...