2

我开发了 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 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。

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

4

1 回答 1

2

您的 EFEntities 对象在 WCF 消息被序列化之前被释放,这就是导致 EF 查询实际执行的原因。通过调用 ToList() 或 ToArray() 在“使用”块内对结果集进行材料化。

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

        return Result.ToArray();
    }            

}
于 2013-01-09T19:11:07.483 回答