我开发了WCF服务,该服务在内部使用 Entity Framework 进行数据库操作。虽然插入、更新和删除工作正常,但我在从该表中选择所有记录并将其公开给客户端时遇到问题。
我向客户端公开数据的代码是:-
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 响应时发生错误。这可能是由于服务端点绑定(bind)不使用 HTTP 协议(protocol)。这也可能是由于服务器中止 HTTP 请求上下文(可能是由于服务关闭)。有关更多详细信息,请参阅服务器日志。
为什么会出现此错误以及如何向客户端公开数据
最佳答案
您的 EFEntities 对象在 WCF 消息被序列化之前被释放,这才是导致 EF 查询实际执行的原因。通过调用 ToList() 或 ToArray() 在“using” block 内具体化结果集。
public IEnumerable<Bank_Configuration> SelectBankConfiguration()
{
using (EFEntities objEFEntities = new EFEntities())
{
var Result= from c in objEFEntities.Bank_Configuration
select c;
return Result.ToArray();
}
}
关于c# - 如何使用 Entity Framework 从 WCF 内部提取数据到客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14244622/