学习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的建构工作。
【编辑推荐】