我有两个表,Unit和SubUnit,具有一对多关系:一个单元可以有0个或更多SubUnits。
我在WCF Windows服务中使用Linq to SQL(.dbml文件)来访问数据库。
使用Service Client,我调用任何方法来检索Units或SubUnits并且它工作正常......只要数据库中没有SubUnit(SubUnit表中有0行)。
如果有1个或更多SubUnit,则在调用相同的方法时会出现以下错误:
我已经删除了表并重新创建了它们,我已经将Unit / SubUnit表重新添加到DBML,重新安装了服务等。我以前从未遇到过这个问题。
我理解“套接字中止”错误可能是由于尝试通过WCF传递过多数据引起的,但目前数据库中有1个单元和1个SubUnit,我仍然收到此错误!
任何人都可以对此有所了解吗?
答案 0 :(得分:0)
您需要添加[DataContract(IsReference = true)] attr。到你的实体。
答案 1 :(得分:-1)
一旦我在wcf服务中使用实体框架时在数据库上引入了外键,使用wcf客户端就会出现完全相同的错误/问题。
实体框架的服务器端调用和业务逻辑与FK的工作正常,但客户端在连接服务时遭到轰炸(返回List)。
我使用.edmx以及EF 5.x DBContext Generator。
我必须关闭所有导航属性的延迟加载。
即。在我的模型模板中,删除'虚拟'模板中的关键字:
public string AccessibilityAndVirtual(string accessibility)
{
return accessibility + (accessibility != "private" ? " virtual" : "");
}