带有实体框架的WCF服务-如果外键出错
本文关键字:如果 出错 服务 WCF 实体 框架 | 更新日期: 2023-09-27 18:18:51
我有一个问题。请注意,我是一个初学者,答案可能很简单……
我使用Visual Studio 2012,我想用实体框架创建一个WCF服务来访问数据库。这可以在5-10分钟内完成…
-
我用SQL Express创建了一个简单的数据库(例如:2个表:客户端和城市,idCity作为客户端表中的外键)
-
我创建了一个新的WCF服务
我添加了一个ADO。. NET实体数据模型(.edmx)链接到我的数据库 - 我创建了一个方法来返回所有的客户端
当我在WCF测试客户端或控制台应用程序中尝试该方法时,我得到一个CommunicazionException错误。
但它工作正确,如果我删除外键在我的客户端表…
getClients方法:
public Client[] GetClients()
{
using (ClientEntities context = new ClientEntities ())
{
context.Configuration.LazyLoadingEnabled = false;
return context.Client.ToArray();
}
}
我使用默认配置…
这是一种特殊的方法吗?(我的代码当然是不完整的做我想做的)
在我的应用程序中,我想获得所有客户端,并为每个客户端显示客户端名称和城市名称。
谢谢
如果没有更多的细节,很难确切地说出你的问题是什么,但是当你删除客户端表上的外键时,它的工作原理使我相信你有一个数据库或实体框架问题。
你可能想尝试更新你的。edmx。右键单击。edmx图表,选择update model from database,并选择两个表。
如果这不起作用,您也可以尝试从模型中删除每个表(右键单击edxml查看器并选择delete),然后使用数据库中的更新模型重新添加它们。
如果你仍然有问题,试着找出你的代码抛出异常的确切位置。调试GetClient方法,并在返回语句后面放置一个断点,以查看在执行查询时是否发生错误。如果是这种情况,您应该获得更详细的异常消息,以帮助进行故障排除。
try this:
public Client[] GetClients()
{
using (ClientEntities context = new ClientEntities ())
{
context.Configuration.LazyLoadingEnabled = false;
context.Configuration.ProxyCreationEnabled = false;
return context.Client.ToArray();
}
}