XmlSerializer在一个太多关系上的错误

Bojangles

给我一个带有Access数据库的旧的Classic Asp应用程序,可以将其转换为MVC和SQL Server。数据库中的表除了两个以外几乎没有关系,我现在已经解决了,但是以后会引起问题。

如果我让两个表不相关,那么所有方法都可以使用,使用“普通” API时,所有相关的表也都可以使用,但是如果我尝试在我的任何列表(而不是IList)上使用XmlSerializer,即使是不相关的表与这两个表相关但都在同一个Model中引用,我得到了这个错误。

无法序列化类型为System.Collections.Generic.ICollection`1的成员mysite.Models.RunArea.Runs,因为它是一个界面。

更新:我正在做些事情,从数据库更新模型后,我的RunArea Model现在具有IRun of ICollection,我该怎么办?

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

关系是一个RunArea有很多Runs

我有以下代码:

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,所以我想我的问题出在其他地方吗?

Bojangles

固定,我关闭了“延迟加载”,在更改的“运行模型”中,

public virtual RunArea RunAreas { get; set; }

public RunArea RunAreas { get; set; }

在我的RunArea模型中,我进行了更改,

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

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章