【问题标题】:Serialization issue in entity framework实体框架中的序列化问题
【发布时间】:2015-04-28 16:37:46
【问题描述】:

我有下一个问题,我有来自以下 2 个类别的简单 MVC

public class Manager
{
    public int Id { get; set; }
    public String Name { get; set; }
    public bool IsDeleted { get; set; }
    public virtual List<Employee> EmplCol { get; set; }
    public Manager() 
    {
        this.EmplCol = new List<Employee>();
    }
}
public class Employee
{
    public int Id { get; set; }
    public String Profeesion { get; set; }
    public DateTime CreatedOn { get; set; }
    public Employee() { }
}

和下一个实体框架上下文

public class EFContext : DbContext
{
    public DbSet<Manager> Managers { get; set; }
}

在将自动生成的WebApi 2 控制器添加到我的项目中后,将Manager 作为ModelEFContext 作为上下文类,我得到序列化异常。在这种情况下,我必须怎么做才能启用序列化?

【问题讨论】:

  • 我怀疑即使编译为 Manager 的构造函数也会尝试设置 this.SheepCol 但没有名为 SheepCol 的字段或属性
  • @AndyNichols 很抱歉,已经改变了它。实际上,在序列化期间创建的代理存在问题,当我尝试此 this.Configuration.ProxyCreationEnabled = false; 时,它会解决问题,但在这种情况下,我会得到空 EmplCol
  • 发布您的控制器代码,并请发布完整的例外情况

标签: .net asp.net-mvc entity-framework serialization asp.net-web-api


【解决方案1】:

试试这个:

[DataContract]
public class Manager
{
    [DataMember]
    public int Id { get; set; }

    [DataMember]
    public String Name { get; set; }

    [DataMember]
    public bool IsDeleted { get; set; }

    [JsonIgnore]
    public virtual List<Employee> EmplCol { get; set; }
}

如果可行,我会编辑并解释原因,

【讨论】:

    【解决方案2】:

    除了 user2997779 的回答:如果您收到“检测到属性的自引用循环...”异常消息,此页面有几种处理方法:https://code.msdn.microsoft.com/Loop-Reference-handling-in-caaffaf7

    【讨论】:

      猜你喜欢
      • 2011-05-02
      • 1970-01-01
      • 2013-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      • 1970-01-01
      相关资源
      最近更新 更多