1

我有个问题。请注意,我是初学者,答案可能很简单......

我使用 Visual Studio 2012,我想使用实体框架创建 WCF 服务来访问数据库。它可以在5-10分钟内完成...

  • 我用 SQL Express 创建了一个简单的数据库(例如:2 个表:Client 和 City,idCity 作为 Client 表中的外键)

  • 我创建了一个新的 WCF 服务

  • 我添加了一个链接到我的数据库的 ADO.NET 实体数据模型 (.edmx)
  • 我创建了一个方法来返回我的所有客户

当我在 WCF 测试客户端或控制台应用程序中尝试该方法时,我收到 CommunicazionException 错误。

但如果我删除客户端表中的外键,它可以正常工作......

我的 getClients 方法:

public Client[] GetClients()
{
    using (ClientEntities context = new ClientEntities ())
    {
        context.Configuration.LazyLoadingEnabled = false;
        return context.Client.ToArray();
    }

}

我使用默认配置...

是一种特殊的方法吗?(我的代码肯定是不完整的做我想做的事)

在我的应用程序中,我想获取所有客户端,并为每个客户端显示客户端名称和城市名称。

谢谢

4

2 回答 2

0

如果没有更多详细信息,很难准确说出您的问题是什么,但是当您删除客户端表上的外键时它会起作用这一事实让我相信您遇到了数据库或实体框架问题。

您可能想尝试更新您的 .edmx。右键单击 .edmx 图并从数据库中选择更新模型并选择两个表。

如果这不起作用,您还可以尝试从模型中删除每个表(右键单击 edxml 查看器并选择删除),然后也使用数据库中的更新模型重新添加它们。

如果您仍然遇到问题,请尝试找出您的代码在哪里引发异常。调试 GetClient 方法并在 return 语句之后放置一个断点,以查看在执行查询时是否发生错误。如果是这种情况,您应该获得更详细的异常消息以帮助进行故障排除。

于 2013-06-17T20:19:01.600 回答
0

尝试这个 :

 public Client[] GetClients()
  {
     using (ClientEntities context = new ClientEntities ())
       {
          context.Configuration.LazyLoadingEnabled = false;
          context.Configuration.ProxyCreationEnabled = false;
          return context.Client.ToArray();
        }

  }
于 2014-03-31T08:52:05.417 回答