LINQ To SQL Designer描述
學習LINQ To SQL時,經常會遇到LINQ To SQL Designer問題,這里將介紹LINQ To SQL Designer問題的解決方法。
LINQ To SQL Designer
談完了系統架構后,現在讓我們回到主軸上,如何將LINQ To SQL應用于N-Tier應用程式架構中,在這個階段首要必須解決的問題是,LINQ To SQL的Entity Object能否透過Web Service 、Remoting、WCF來傳遞?
答案是肯定的,不支援這個的話,LINQ To SQL就幾乎沒有存在的價值了。不過這有個小技巧,在預設設定中,LINQ To SQL Designer所產生出來的Entity Class是不支援序列化的,你必須在LINQ To SQL Designer中調整Serialization Mode屬性來要求其產生可序列化的Entity Class。
在設定Serialization Mode為Unidirectional后,所產生的Entity Class便會標上傳統物件序列化所須的[Serializable]及WCF所須的[DataContrast]等兩個Attribute,有了這兩個 Attribute后,Entity Object便可傳遞于Remoting、Web Services、WCF等通訊協定。
中介伺服器端的實作
1.用WCF來實作中介伺服器是一件相當輕松的事,首先請建立一個WCF Service Application專案。
2.然后添加一個LINQ To SQL Classes項目于此專案中,本例于此添加了北風資料庫的Customers資料表。
3.接著刪除自動產生的IService1.cs,于Service1.svc.cs中輸入一下代碼。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.Serialization;
- using System.ServiceModel;
- using System.Text;
- namespace WCFDataService
- {
- [ServiceContract]
- public interface IDataService
- {
- [OperationContract]
- Customer[] GetAllData();
- }
- public class DataService : IDataService
- {
- region IDataService Members
- public Customer[] GetAllData()
- {
- NorthwindDataContext context = new NorthwindDataContext();
- return (from s1 in context.Customers select s1).ToArray();
- }
- endregion
- }
- }
最后調整app.config中關于Service的設定后,便完成了此一執行于中介伺服器上的WCF Service的建構工作。
【編輯推薦】