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