从DB上下文中分离EF实体,删除它们的关系?

时间:2011-11-29 21:08:25

标签: c# asp.net entity-framework serialization

    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 :(得分:0)

由于您要序列化为JSON,我建议使用Json.NET library from James Newton-King。您可以关闭序列化关系。下面是我在关闭ReferenceLooping时使用的序列化方法。

 public static string Serialize(object model)
 {
     var settings = new JsonSerializerSettings
                     {
                        ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
                     };
     return JsonConvert.SerializeObject(model, Formatting.None, settings);
 }