给我一个带有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,所以我想我的问题出在其他地方吗?
固定,我关闭了“延迟加载”,在更改的“运行模型”中,
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] 删除。
我来说两句