C# 实现IEntityWithRelationships会导致相关对象停止加载
我有两个实体建立了多对多关系: 类别:C# 实现IEntityWithRelationships会导致相关对象停止加载,c#,entity-framework-4.1,json.net,C#,Entity Framework 4.1,Json.net,我有两个实体建立了多对多关系: 类别: public class Category : IEntityWithRelationships { [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] public int Id { get; set; } public virtual ICollection<User> Users { get
public class Category : IEntityWithRelationships
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public virtual ICollection<User> Users { get; set; }
//Json.NET needs this in order to serialize the object
private RelationshipManager rm;
RelationshipManager IEntityWithRelationships.RelationshipManager
{
get
{
if (rm == null)
rm = RelationshipManager.Create(this);
return rm;
}
}
}
公共类类别:IEntityWithRelationships
{
[关键]
[数据库生成(DatabaseGeneratedOption.Identity)]
公共int Id{get;set;}
公共虚拟ICollection用户{get;set;}
//Json.NET需要这样才能序列化对象
私人关系经理;
RelationshipManager客户端与Relationships.RelationshipManager
{
得到
{
if(rm==null)
rm=RelationshipManager.Create(此);
返回rm;
}
}
}
和用户:
public class User
{
public int Id { get; set; }
public ICollection<Category> Categories { get; set; }
}
公共类用户
{
公共int Id{get;set;}
公共ICollection类别{get;set;}
}
相关对象加载良好,但随后我需要将category对象序列化为Json,Json.Net继续抛出:
无法序列化RelationshipManager对象。这种
当RelationshipManager属于时,无法序列化对象
未实现IEntityWithRelationships的实体对象
因此,我实现了IEntityWithRelationships
接口,但现在我的相关对象没有加载
我尝试了一个自定义的
ContractResolver
,但仍然出现了上述异常。如何获取要加载的相关对象?在EF
类中不能有这种交互,因为EF
不会创建代理=>延迟加载
已关闭。实际上,当您必须序列化entties时,人们建议您关闭LazyLoading
(当然,实现该接口不是正确的方法)。您应该准备更多关于如何将EntityFramework
与序列化一起使用的信息。您不应该在代码优先的实体中实现该接口。实现该接口违反了POCO。它是“重”EF实体使用的接口,通过使用它,您将失去EF处理POCO的方式
我想你想这样做的唯一原因是循环引用的问题。您应该能够在不指定任何特定于API的接口的情况下执行此操作