[英]Linq2sql and WCF, getting access to tables
使用linq2sql和wcf時遇到一些困難。
假設我有三個表: Reports
, Tasks
和Types
。 Tasks
引用Reports
(一個Report
可以具有無限數量的tasks
), Reports
引用Types
( Report
具有某種類型,例如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.