【发布时间】:2020-03-01 16:19:23
【问题描述】:
以下代码是一个 WCF 项目。 我正在使用 EntityFramekwork (v.6) 加载表的子数据。 如下代码。
这是存储库中的代码。
public IEnumerable<Messages> GetMessagesList()
{
return context.Messages.Include(e=>e.Users).Include(e=>e.Codes).ToList();
}
这是服务中的代码:
public IEnumerable<Messages> GetMessagesList()
{
var res = messagesRepository.GetMessagesList();
return res;
}
无论有无 include 方法,它都会在调试时返回数据。
但问题是当我添加 include 方法以在我的客户端中加载相关的子实体时。当我只加载 Messages Entity 时就可以了。
接收到的 HTTP 响应时出错 http://localhost:2341/DataService.svc。这可能是由于 服务端点绑定不使用 HTTP 协议。这也可以 是由于服务器中止了 HTTP 请求上下文 (可能是由于服务关闭)。查看服务器日志了解更多信息 详情。
内部异常消息:
底层连接已关闭:发生意外错误 一个接收。
使用 WCF TEST CLIENT 进行测试时:
问题实际上出在哪里,如何将带有子级的消息实体传递给客户端而不会出现错误。错误很笼统,无法理解实际问题。
【问题讨论】:
-
您似乎正试图从服务中返回实体对象。这是不可能的,因为默认情况下 Entity 对象不能是 Serializable 。所以你不能直接从服务中返回。您可以将您的实体映射到 DTO 而不是返回它。检查wcf-entity-framework-data-contracts
标签: c# entity-framework wcf