LINQ To SQL Designer描述
學(xué)習(xí)LINQ To SQL時,經(jīng)常會遇到LINQ To SQL Designer問題,這里將介紹LINQ To SQL Designer問題的解決方法。
LINQ To SQL Designer
談完了系統(tǒng)架構(gòu)后,現(xiàn)在讓我們回到主軸上,如何將LINQ To SQL應(yīng)用于N-Tier應(yīng)用程式架構(gòu)中,在這個階段首要必須解決的問題是,LINQ To SQL的Entity Object能否透過Web Service 、Remoting、WCF來傳遞?
答案是肯定的,不支援這個的話,LINQ To SQL就幾乎沒有存在的價值了。不過這有個小技巧,在預(yù)設(shè)設(shè)定中,LINQ To SQL Designer所產(chǎn)生出來的Entity Class是不支援序列化的,你必須在LINQ To SQL Designer中調(diào)整Serialization Mode屬性來要求其產(chǎn)生可序列化的Entity Class。
在設(shè)定Serialization Mode為Unidirectional后,所產(chǎn)生的Entity Class便會標(biāo)上傳統(tǒng)物件序列化所須的[Serializable]及WCF所須的[DataContrast]等兩個Attribute,有了這兩個 Attribute后,Entity Object便可傳遞于Remoting、Web Services、WCF等通訊協(xié)定。
中介伺服器端的實作
1.用WCF來實作中介伺服器是一件相當(dāng)輕松的事,首先請建立一個WCF Service Application專案。
2.然后添加一個LINQ To SQL Classes項目于此專案中,本例于此添加了北風(fēng)資料庫的Customers資料表。
3.接著刪除自動產(chǎn)生的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
- }
- }
最后調(diào)整app.config中關(guān)于Service的設(shè)定后,便完成了此一執(zhí)行于中介伺服器上的WCF Service的建構(gòu)工作。
【編輯推薦】