簡體   English   中英

具有實體框架的WCF服務-如果外鍵錯誤

[英]WCF Service with entity framework - error if foreign key

我有個問題。 請注意,我是一個初學者,答案可能很簡單。

我使用Visual Studio 2012,並且想使用實體框架創建WCF服務來訪問數據庫。 可以在5到10分鍾內完成...

  • 我使用SQL Express創建了一個簡單的數據庫(例如:2個表:Client和City,在Client表中使用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圖,然后從數據庫中選擇更新模型,然后選擇兩個表。

如果那行不通,您還可以嘗試從模型中刪除每個表(右鍵單擊edxml查看器並選擇Delete),然后也使用數據庫中的更新模型重新添加它們。

如果仍然有問題,請嘗試找出代碼在何處引發異常。 調試GetClient方法,並在return語句之后放置一個斷點,以查看執行查詢時是否發生錯誤。 如果是這種情況,您應該獲得更詳細的異常消息以幫助進行故障排除。

嘗試這個 :

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

  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM