2008年10月2日 星期四

ADO.NET Data Service 與 LINQ to SQL

今天在第一次測試時,碰到這樣的訊息

問題

The server encountered an error processing the request. See server logs for more details.

image

測試的過程是這樣的

  1. 建立一個 Web application
  2. 建立一個 Linq to sql dbml file,上頭拖了一個 Company 的 table
  3. 建立一個 ADO.NET Data Service,並修改名稱為 Service.svc
  4. 修改 Service.svc.cs 如下
    public class Service : DataService
    {
        public static void InitializeService(IDataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
            config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
        }
    }

解決

頁面上什麼也沒有,只有這一行字。Google了一下。原來加上一行 attribute 即可
[ServiceBehavior(IncludeExceptionDetailInFaults=true)]
    public class Service : DataService
    {
        public static void InitializeService(IDataServiceConfiguration config)
        {
            config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
            config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
        }
    }

image

意思是 Company 沒有key

所以在dbml 上加上 partial class, code 如下

  [DataServiceKey("OID")]
  partial class Company
  {
  }
如此一來就解決了問題。

沒有留言:

Share with Facebook