C# 从数据库上下文中分离EF实体,删除它们的关系? 公共列表GetProductsByProductcategory(十进制productCategoryKey) { DBEntities ctx=新的DBEntities(); List productList=ctx.PRODUCT.Where(p=>p.PRODUCT\u CATEGORY\u KEY==productCategoryKey).ToList(); 返回产品列表; }
有没有办法将每个产品实体从ctx实例中分离出来,从而删除它们与其他实体的关系?或以任何其他智能方式删除相关实体。我的问题是我无法序列化具有关系的实体。这将导致循环引用异常。我目前的解决方案是使用有效的C# 从数据库上下文中分离EF实体,删除它们的关系? 公共列表GetProductsByProductcategory(十进制productCategoryKey) { DBEntities ctx=新的DBEntities(); List productList=ctx.PRODUCT.Where(p=>p.PRODUCT\u CATEGORY\u KEY==productCategoryKey).ToList(); 返回产品列表; },c#,asp.net,entity-framework,serialization,C#,Asp.net,Entity Framework,Serialization,有没有办法将每个产品实体从ctx实例中分离出来,从而删除它们与其他实体的关系?或以任何其他智能方式删除相关实体。我的问题是我无法序列化具有关系的实体。这将导致循环引用异常。我目前的解决方案是使用有效的ctx.ContextOptions.ProxyCreationEnabled=false。但如果我这样做,我就不会得到任何懒惰的加载。非常感谢你的帮助。谢谢既然您正在序列化为JSON,我建议您使用。您可以禁用序列化关系。下面是我在关闭ReferenceLooping的情况下使用的序列化方法
ctx.ContextOptions.ProxyCreationEnabled=false
。但如果我这样做,我就不会得到任何懒惰的加载。非常感谢你的帮助。谢谢既然您正在序列化为JSON,我建议您使用。您可以禁用序列化关系。下面是我在关闭ReferenceLooping的情况下使用的序列化方法
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;
}
您试图将实体序列化为什么格式?我想这应该可以,但上次我尝试json.net时,每次尝试序列化时都会遇到堆栈溢出。你确定这些关系被删除了,并且没有序列化吗?是的,根据我的经验,它们已经被删除了。如果您真的想确保,您可以将EF实体映射到另一个新类,该类使用完全排除关系,然后序列化该新类。
public static string Serialize(object model)
{
var settings = new JsonSerializerSettings
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
};
return JsonConvert.SerializeObject(model, Formatting.None, settings);
}