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