我开发了WCF服务,该服务在内部使用实体框架进行数据库操作。当插入,更新和删除工作正常时,我在从该表中选择所有记录并将其公开给客户端时遇到问题。

我向客户公开数据的代码是:-

public IQueryable <Bank_Configuration>  SelectBankConfiguration()
        {
            using (EFEntities objEFEntities = new EFEntities())
            {
                var Result= from c in objEFEntities.Bank_Configuration
                            select c;

                return Result;
            }

        }


但是在客户端,当我使用此方法获取数据时,客户端给出的错误为
收到对“ http:// localhost:8732 / Design_Time_Addresses / WcfServiceLibrary1 / Service1 /”的HTTP响应时发生错误。这可能是由于服务端点绑定未使用HTTP协议。这也可能是由于服务器终止了HTTP请求上下文(可能是由于服务关闭了)。有关更多详细信息,请参见服务器日志。

为什么会出现此错误,以及如何向客户端公开数据

最佳答案

在序列化WCF消息之前,将处置您的EFEntities对象,这是导致EF查询实际执行的原因。通过调用ToList()或ToArray()在“ using”块内对结果集进行矩阵化。

public IEnumerable<Bank_Configuration>  SelectBankConfiguration()
{
    using (EFEntities objEFEntities = new EFEntities())
    {
        var Result= from c in objEFEntities.Bank_Configuration
                    select c;

        return Result.ToArray();
    }

}

10-08 08:48