Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有实体框架的WCF服务-外键错误_C#_Wcf_Frameworks_Foreign Keys_Entity - Fatal编程技术网

C# 具有实体框架的WCF服务-外键错误

C# 具有实体框架的WCF服务-外键错误,c#,wcf,frameworks,foreign-keys,entity,C#,Wcf,Frameworks,Foreign Keys,Entity,我有个问题。请注意,我是一个初学者,答案可能很简单 我使用Visual Studio 2012,我想使用实体框架创建一个WCF服务,以访问数据库。它可以在5-10分钟内完成 我使用SQL Express创建了一个简单的数据库(例如:2个表:Client和City,在Client表中以idCity作为外键) 我创建了一个新的WCF服务 我添加了一个链接到数据库的ADO.NET实体数据模型(.edmx) 我创建了一个方法来返回我的所有客户机 当我在WCF测试客户端或控制台应用程序中尝试该方法时,

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

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

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

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

  • 我添加了一个链接到数据库的ADO.NET实体数据模型(.edmx)
  • 我创建了一个方法来返回我的所有客户机
当我在WCF测试客户端或控制台应用程序中尝试该方法时,我得到一个CommunicazionException错误

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

我的GetClient方法:

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

}
我使用了默认配置

这是一种特殊的方式吗?(我的代码确实不完整,无法实现我的目标)

在我的应用程序中,我希望获得所有客户机,并为每个客户机显示客户机名称和城市名称


谢谢

如果没有更多详细信息,很难准确地说出您的问题所在,但当您删除客户机表上的外键时,它会起作用,这一事实使我相信您存在数据库或实体框架问题

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

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

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

试试这个:

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

  }

谢谢你的回答。我已经尝试了很多次这样的改变,但是我仍然得到了错误。我还尝试使用其他网络数据库,但没有成功。。。错误应该来自方法(比如使用“.Include”(“City”)”或类似的东西)或web.config,但我没有更改其中的任何内容……好的,我可能设法解决了这个问题:我的类是在文件“Model.cs”中生成的,在我的客户机类中,我从“public virtual City{get;set;}”中删除了“virtual”关键字我不知道我是否会有其他问题,但它现在起作用了。但我仍然不知道如何在我的应用程序中获取城市名称而不是id