【发布时间】:2009-05-06 18:37:57
【问题描述】:
我使用所需的表构建了我的 *.dbml 文件并生成了关系,1 到多个。
我的 WCF 服务库中的一个方法有这个查询
IQueryable<Client>localClient = from c in db.Clients
where c.ClientID.Equals(2612)
select c;
foreach(Client currentClient in localClient)
{
//Call serialize method here
}
客户具有一对多关系的表之一是客户 - 员工
使用“localClient”,我想将其序列化并返回给调用者。但是它告诉我无法形成 XML 文档。
这是内部异常: 序列化 TestDB_Public.Employee 类型的对象时检测到循环引用。
我的序列化代码
public string Serialize(object o, XmlSerializerNamespaces ns)
{
try
{
System.IO.MemoryStream m = new System.IO.MemoryStream();
if (ns != null)
serializer.Serialize(m, o, ns);
else
serializer.Serialize(m, o);
m.Position = 0;
byte[] b = new byte[m.Length];
m.Read(b, 0, b.Length);
return System.Text.UTF8Encoding.UTF8.GetString(b);
}
catch (Exception ex)
{
return "Ex = " + ex.ToString();
}
}
IQueryable 的序列化是否不可能具有一对多的关系?
【问题讨论】:
-
似乎没有理由将集合类型设为 IQueryable。相反,使用 var 并在查询结束时调用 .ToList() 方法。即使这不起作用,它也会使实际查询执行的重点更加明确和清晰
-
这条评论真的很有帮助,Josh E。我恳请你充实它并重新提交它作为答案。保证投票!