簡體   English   中英

Linq2sql和WCF,可以訪問表

[英]Linq2sql and WCF, getting access to tables

使用linq2sql和wcf時遇到一些困難。
假設我有三個表: ReportsTasksTypes Tasks引用Reports (一個Report可以具有無限數量的tasks ), Reports引用TypesReport具有某種類型,例如BugReport,ChangeRequest等)。

現在我想通過WCF獲取所有Reports 我已經編寫了GetAllReports()函數。 當然,獲取與Reports相關的數據存在問題(在本例中為Reports Tasks )。 LoadOptions的DataContext的是足夠在這種情況下。
但是現在我遇到了另一個問題:我也想訪問Types表,即當我擁有Report對象時,我希望能夠從Report所關聯的行中獲取Type名稱或其他名稱。 在這種情況下, LoadOptions不起作用。

這是我獲取所有報告的代碼:

public ICollection<Database.Zgloszenia> GetAllReports()
    {
        using (var dataContext = new Database.ChangeSystemDataDataContext())
        {
            var loadOptions = new System.Data.Linq.DataLoadOptions();
            loadOptions.LoadWith<Database.Reports>(t => t.Tasks);
            loadOptions.LoadWith<Database.Reports>(t => t.Types);
            dataContext.LoadOptions = loadOptions;
            return dataContext.Reports.Select(r => r).ToList();
        }
    }

調試服務時,返回的值都可以-可以參考Tasks和Types表。 但是,將對象傳輸到WCF客戶端后,僅存在“任務”表,“類型”丟失。
我注意到,當前僅存在表,該表引用查詢的主表(在這種情況下為Report;任務使用報告,因此它們存在),而不是主表使用的那個(在這種情況下為Types; Report)使用“類型”,而“類型”不存在)。

是該默認行為無法更改,還是有某種方法可以將類型行包含在查詢結果中?

提前致謝
哈雷克

不能完全回答您的問題,但是您看到過WCF數據服務嗎?

您是否已在LINQ to SQL設計器中將每個實體類的序列化模式設置為“單向”?

我已經將序列化模式設置為對整個dbml模式都是單向的,我認為它將應用於模式中的所有實體。 我認為是的,序列化實體效果很好。
我將在家里再次檢查。

我還查看了Mike Chaliy提到的WCF數據服務,但我認為這不是我想要的。 我正在研究應該在WCF上使用Linq2Sql的大學項目。

編輯:
我檢查了一下,模式已設置了unidirectional Serialization Mode ,單個表沒有序列化模式,所以我看起來一切都設置正確。

暫無
暫無

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

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