XmlSerializer与一个太多关系的错误

时间:2014-05-21 23:21:31

标签: c# asp.net-mvc xml-serialization

我获得了一个旧的Classic Asp应用程序,其中包含一个Access数据库,可以转换为MVC和SQL Server。数据库中的表格大多是不相关的,除了两个,我现在已经解决了这个问题,但以后会引起问题。

如果我将这两个表格无关,这一切都有效,它也适用于使用' normal' API,但如果我尝试在我的任何列表上使用XmlSerializer,而不是IList,即使是与这两个表完全无关但在同一模型中引用的表,我也会收到此错误。

  

无法序列化类型为System.Collections.Generic.ICollection`1 [[mysite.Models.Run,​​mysite,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null]]的成员mysite.Models.RunArea.Runs,因为它是一个界面。

更新:我正在做一些事情,在从数据库更新模型后,我的RunArea模型现在有一个运行ICollection,我该怎么办?

public virtual ICollection<Run> Runs { get; set; }

关系是One RunArea有很多运行

我有以下代码:

DatabaseFeed模型:

public List<Run> Runs { get; set; }

控制器:

[ValidateInput(false)]
public ActionResult Runs()
{
    var runs = db.Runs.ToList();

    DatabaseFeed wf = new DatabaseFeed
    {
        Runs = runs
    };

    XmlSerializer sSubmit = new XmlSerializer(typeof(DatabaseFeed));
    StringWriter sw = new StringWriter();
    XmlWriter xw = XmlWriter.Create(sw);
    sSubmit.Serialize(xw, wf);
    var xml = sw.ToString();

    return Content(xml, "application/xml");

    /*return View(wf);*/

}

如果我在数据库中删除RunArea和Run之间的关系,并且如果我只是返回View(wf); ,则可以正常工作。

我在网上找到的所有内容都谈到不使用IList,但我不是,我使用的是List,所以我猜我的问题出在其他地方了?

1 个答案:

答案 0 :(得分:0)

修复了,我在运行模型中关闭了延迟加载,我改变了,

public virtual RunArea RunAreas { get; set; }

public RunArea RunAreas { get; set; }

在我的RunArea模型中我改变了,

public ICollection<Run> Runs { get; set; }

public List<Run> Runs { get; set; }