C# 如果实体处于关系中,EF中的CommunicationException
我的数据库中有两个表(为了本例)。 产品和图像。他们是一对多的关系。关系是通过数据库中的外键完成的 我基于数据库生成了一个EF.edmx文件,一切正常。 我唯一的一个问题是,这个.edmx在WCF项目中,如果我返回一个产品对象,我会在客户端得到以下异常: 接收对的HTTP响应时出错。这可能是由于服务端点绑定未使用HTTP协议造成的。这也可能是由于服务器中止了HTTP请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。” 如果我删除关系,WCF服务的一切都正常,除了.edmx不允许我映射关系,因为DB中有一个必须映射的FK键约束。如果我删除了所有的功能,但我不想到处删除数据库中的每个FK键,因为那样我就会回到LINQ-TO-SQL,这比EF更糟糕 我想我在做一些非常愚蠢的事情。请告知 (我的代码不确定您是否需要它,我认为这与VB.NET无关) 客户端:C# 如果实体处于关系中,EF中的CommunicationException,c#,vb.net,wcf,entity-framework,service,C#,Vb.net,Wcf,Entity Framework,Service,我的数据库中有两个表(为了本例)。 产品和图像。他们是一对多的关系。关系是通过数据库中的外键完成的 我基于数据库生成了一个EF.edmx文件,一切正常。 我唯一的一个问题是,这个.edmx在WCF项目中,如果我返回一个产品对象,我会在客户端得到以下异常: 接收对的HTTP响应时出错。这可能是由于服务端点绑定未使用HTTP协议造成的。这也可能是由于服务器中止了HTTP请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。” 如果我删除关系,WCF服务的一切都正常,除了.edmx不允许我
Dim db作为新服务引用1.SynchServiceClient
Dim prod=db.GetProductById(“,”,40)
您的数据协定可能无法完全序列化。你试过调试这个服务吗?我怎么知道它是否完全可序列化?不要从EF模型返回整个类。创建一些数据传输对象(DTO)并只返回您需要的内容。
Function GetProductById(username As String, pass As String, productid As Integer)
As Product Implements SynchService.GetProductById
If ValidateLogin(username, pass) Then
Using db As New GaranciaEntities
Try
Dim prod = db.Products.Where(Function(n) n.ProductID = productid)
.First
Return prod
Catch ex As Exception
Return Nothing
End Try
End Using
Else
Return Nothing
End If
End Function