簡體   English   中英

我正在測試一個 WCF 服務和一個 EF 數據層,接收字符串列作為(空),但接收整數作為真實數據。 為什么字符串是 null?

[英]I'm testing a WCF Service and an EF Data layer, receiving String columns as (null), but receive integers as real data. Why are the strings null?

I'm building a multi-layered Windows VS C# solution that has a WCF Service Library project with EF6.2 loaded, and an ADO.NET Data layer with EF6.2 also.

EDMX model 是作為“數據庫優先”的一組表從我的筆記本電腦上的 MSSQL Server Express 2016 服務器構建的。 我的 WCF 服務接口和代碼此時只有一張表的屬性和方法。 該表也已在邏輯和數據層方法中構建。 因此,我現在正在使用 WCF 測試客戶端測試該服務,並且我在我的服務對數據層的響應中正確接收了一些 integer 數據,但沒有字符串數據。

While testing my "GetMemberByID" method, it returns all String column results as a value of "(null)", and a type of "NullObject",

但返回整數及其實際值。 WCF Soap 響應將返回的字符串值顯示為“”。 但,
整數返回如下:“7”。 我的測試數據庫中有 50 多個數據行,用作 EF6.2 EDMX 構建的源。 我的 App.config 在數據和服務層中引用相同的 (localdb)\ V13.0 服務器和數據庫。

有沒有人遇到過這個問題,你能告訴我我錯過了什么嗎? MSSQL 數據庫最初是一個 (OleDb) MS Access 數據庫,我將其導入 MSSQL Server。 提前致謝。

序列化過程似乎有問題。 在我這邊,可以正確返回字符串字段。 默認情況下, DataContractSerializer用於反序列化/反序列化復雜的 object 數據。
https://docs.microsoft.com/en-us/dotnet/framework/wcf/feature-details/using-data-contracts
最可能的原因可能是[DataMember]屬性未修飾可空字段。 請檢查客戶端自動生成的DataContract的列是否包含[DataMember]屬性。
http://sivakrishnakuchi.blogspot.com/2010/05/troubleshoot-wcf-service-returning.html
如果問題仍然存在,請隨時告訴我。

好吧,我發現了我的錯誤。 在將業務域對象翻譯回 Service.cs 代碼文件中的服務對象時,我只翻譯了 MemberID 和 RowVersion,沒有翻譯其他列。 因此,在 WCF 測試客戶端結果中顯示的唯一內容是 MemberID 和 RowVersion - 這恰好是我的實體中僅有的兩個非字符串。 所有字符串類型都是 null 因為我沒有將它們翻譯回服務中。 謝謝你看這個,亞伯拉罕,但你讓我開始仔細觀察,謝謝你的建議。 MS 文檔也很有幫助。 一旦我完成了從 UI 到數據層並返回的完整“步入”調試跟蹤,我就能夠看到數據轉換失敗。 還有一件事,在我可以逐步調試到數據層並返回到服務層之前,我必須解決很多人遇到的“基礎數據庫未打開”問題。 我通過本地 IIS 托管我的服務,並且必須對 IIS 應用程序進行一些有關用戶憑據的更改。 我的 App.config 設置為使用“Integrated Security=True” - 這是 IIS 應用程序池中的“直通”憑據。 我將 IIS 應用程序設置為“特定用戶”,但沒有在我的連接字符串中使用用戶 ID/密碼。 一旦我將 IIS 應用程序更改為“直通” - 我就能夠連接並調試到 DAL 並返回。

暫無
暫無

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

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