我在WCF做了很多东西,我首先想到的是:“嗯,这个问题很奇怪” - 但在我想出每一个之后,它总是在某种程度上有意义(有时更多,有时更少)。
但是现在我处于困境并且充满想象力的地步,我想不出这个错误的原因:
无法序列化EntityReference对象。当RelationshipManager属于未实现IEntityWithRelationships的实体对象时,无法序列化此类对象。
把它放在一个上下文中,让我简单地告诉你我的程序:
我有一个客户端,它将一个ID发送给我的WCF。
如果这个ID正在使用中,我将从EF获取它的相关对象(其他我将创建一个新的)并将其发回。
这一切都是由Selftracking Entities完成的 - 让对象工作正常,以及第一次更新:
public static void UpdatePaperOnServer(ref PAPER p)
{
var newP = ServiceClient.UpdatePaper(p);
p = newP;
}
参考“p”是<节目>并且此变量将发生任何变化。
这是UpdatePaper的服务器端实现 正如你所看到的,这里也不会发生任何魔法:
public PAPER UpdatePaper(PAPER p)
{
p.ChangePaperOnDb(); //Simple static DAL-Accessor, works fine
return p; //The Client should get any changes made by other users so far, that's why I'll give the obj back... or if it's a new obj and it has an ID now
}
正如我所说,我的第一个更新工作正常,但只要我再次触发更新例程,我就会收到上面提到的这个错误。
在与我的好伙伴谷歌花了一些时间后,我发现只有一种方法,他们将.NET版本从4.0改为3.5。 但我不知道这是否适合我,因为我无法将运行时间从4.0更改为3.5。
如果有人知道发生了什么 - 请告诉我。 非常感谢你!