相信眼尖的朋友早已發現NET4.0的ADO.NET Data Services不見哩!其實只是改變名稱為WCF Data Services,被歸在WCF這一類。
附上一小段原文引述及其網址:
WCF Data Services (以前稱為 "ADO.NET Data Services") 包含模式與程式庫組合,可讓您建立及存取 Web 或內部網路的資料服務。WCF Data Services 會將資料公開為可由 URI 定址的資源。這可讓您使用具像狀態傳輸 (REST) 的語意存取及變更資料,尤其是標準 HTTP 動作,例如 GET、PUT、POST 和 DELETE。
如何在ADO.NET Entity Data Model建立後加入新mapping
最近在撰寫Web Service,其中單純運算處理之WebMethod不多,主要是連接後端DB將資料透過Web Service回傳,因此需要使用O/R Mapping技術將後端資料預處理,方可為後續Web Service採用。
以VS為開發工具而論,有兩種mapping方式—LINQ to SQL Classes以及ADO .NET Entity Data Model ,前者透過拖曳方式將SQL Server table置放於*.dbml設計介面,後者則以VS提供之精靈設定,使用上極為方便~皆為所視即所得(WYSIWYG)!
但開發階段存在許多不確定因素,今日需要對5個table操作,明日可能因客戶需求變更為7個table,此時便需更新mapping方可進一步使用新增的2個table。LINQ to SQL Classes更新方式一如其建立方式,直接從Server Explorer拖曳想新增的SQL Server table即可,但ADO .NET Entity Data Model 不提供拖曳的方式,必須想辦法將精靈叫出方可更新table。
瞭解上述情境後,以下說明使用ADO .NET Entity Data Model更新mapping時的小技巧。
SETP 1:於*.edmx空白處按右鍵,並選擇「Update Model from Database...」
SETP 2:透過Update Wizard完成table mapping的更新(以新增table mapping為例)
本文主要是提供ADO.NET Entity Data Model使用者一點小撇步,piggy開發時也是苦於mapping更新花了點時間研究,希望這個tip能幫到其他也在學習中的朋友。最後附上開發環境資訊。
[環境說明]
開發工具:VS2010
資料庫:SQL Server Express 2005
.NET Framework版本:4.0
以VS為開發工具而論,有兩種mapping方式—LINQ to SQL Classes以及ADO .NET Entity Data Model ,前者透過拖曳方式將SQL Server table置放於*.dbml設計介面,後者則以VS提供之精靈設定,使用上極為方便~皆為所視即所得(WYSIWYG)!
但開發階段存在許多不確定因素,今日需要對5個table操作,明日可能因客戶需求變更為7個table,此時便需更新mapping方可進一步使用新增的2個table。LINQ to SQL Classes更新方式一如其建立方式,直接從Server Explorer拖曳想新增的SQL Server table即可,但ADO .NET Entity Data Model 不提供拖曳的方式,必須想辦法將精靈叫出方可更新table。
請注意mouse圖案!LINQ to SQL Classes讓您存檔後,
依舊可從Server Explorer拖曳其他table更新mapping
請注意mouse圖案!經精靈設定完成的ADO .NET Entity Data Model,
無法由Server Explorer拖曳其他table更新mapping
瞭解上述情境後,以下說明使用ADO .NET Entity Data Model更新mapping時的小技巧。
SETP 1:於*.edmx空白處按右鍵,並選擇「Update Model from Database...」
SETP 2:透過Update Wizard完成table mapping的更新(以新增table mapping為例)
Update Wizard初始畫面
選取要新增(Add)mapping的表格並按下Finish
更新成功!現在有2個table的mapping...
本文主要是提供ADO.NET Entity Data Model使用者一點小撇步,piggy開發時也是苦於mapping更新花了點時間研究,希望這個tip能幫到其他也在學習中的朋友。最後附上開發環境資訊。
[環境說明]
開發工具:VS2010
資料庫:SQL Server Express 2005
.NET Framework版本:4.0
ADO.NET資料服務/Silverlight--查詢資料服務
前文透過silverlight配置使用者介面,本文進一步使用該介面完成簡單的查詢動作。
(以下5個步驟都是針對Page.xaml.vb作處理)
1.匯入namespace
Imports System.Windows
Imports System.Data.Services.Client
Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports SilverlightClient.Northwind
2.加入下列型別定義
Dim svcContext
Dim ordersBindingCollection
Dim detailsBindingCollection
3.初始化資料繫結集合(下列第4-5行)
Public Sub New()
InitializeComponent()
' Create the binding collections
ordersBindingCollection = New ObservableCollection(Of Orders)()
detailsBindingCollection = New ObservableCollection(Of Order_Details)()
End Sub
4.將下列方法加入至 Page類別
5.按F5進行測試
在 [Customer ID]輸入任一客戶名稱(例如ALFKI),按下 [Get Orders],可取得該客戶訂單。
(以下5個步驟都是針對Page.xaml.vb作處理)
1.匯入namespace
Imports System.Windows
Imports System.Data.Services.Client
Imports System.Collections.ObjectModel
Imports System.Collections.Specialized
Imports SilverlightClient.Northwind
2.加入下列型別定義
Dim svcContext
Dim ordersBindingCollection
Dim detailsBindingCollection
3.初始化資料繫結集合(下列第4-5行)
Public Sub New()
InitializeComponent()
' Create the binding collections
ordersBindingCollection = New ObservableCollection(Of Orders)()
detailsBindingCollection = New ObservableCollection(Of Order_Details)()
End Sub
4.將下列方法加入至 Page類別
5.按F5進行測試
在 [Customer ID]輸入任一客戶名稱(例如ALFKI),按下 [Get Orders],可取得該客戶訂單。
ADO.NET資料服務/Silverlight--建立用戶端應用程式
本文使用前一篇文章建立之 Northwind 資料服務之方案,建立Silverlight應用程式作為新專案。
1.建立Silverlight專案的應用程式
a)在前文的方案中加入新專案,專案類型選擇「Silverlight 應用程式」
2.在專案中加入服務參考
a)「SilverlightClient」專案按滑鼠右鍵,選擇「加入服務參考」並按一下「探索」,隨即顯示前文建立的 Northwind 資料服務
b)輸入命名空間按下確定
這麼做會在專案中加入新的程式碼檔,包含存取資料服務資源做為物件並與之互動的資料類別。 資料類別建立在用戶端應用程式的預設命名空間中。
3.定義用戶端應用程式使用者介面
b)開啟MainPage.xaml並以下列定義應用程式使用者介面的標記取代原本的XAML
程式碼就不貼在這,因為即使用Blogger code block放置,還是限於silverlight無法被blogger看懂還出現奇怪的控制項=..=
程式碼解壓縮後找到SilverlightClient\VisualBasic\SilverlightClient\MainPage.xaml檔案,copy & paste即可!貼完code之後的XAML預覽如下圖
★步驟3b的程式碼在官方網站lost了,請大家去下載才可以把3b完成喔!
★參考網址
PS:後來發現3b不是lost,而是網頁本身有問題,網頁載入完成後那段XAML會看不見,如果懶得下載可以直接點選參考網址右上角的「輕量型」即可取得原版XAML!!
1.建立Silverlight專案的應用程式
a)在前文的方案中加入新專案,專案類型選擇「Silverlight 應用程式」
b)選取「連結這個 Silverlight 控制項到現有的網站」、「加入參考應用程式的測試頁」、「設為起始頁」
2.在專案中加入服務參考
a)「SilverlightClient」專案按滑鼠右鍵,選擇「加入服務參考」並按一下「探索」,隨即顯示前文建立的 Northwind 資料服務
b)輸入命名空間按下確定
這麼做會在專案中加入新的程式碼檔,包含存取資料服務資源做為物件並與之互動的資料類別。 資料類別建立在用戶端應用程式的預設命名空間中。
3.定義用戶端應用程式使用者介面
a)「SilverlightClient」專案按滑鼠右鍵並選擇「加入參考」,選取 System.Windows.Controls.Data
b)開啟MainPage.xaml並以下列定義應用程式使用者介面的標記取代原本的XAML
程式碼就不貼在這,因為即使用Blogger code block放置,還是限於silverlight無法被blogger看懂還出現奇怪的控制項=..=
程式碼解壓縮後找到SilverlightClient\VisualBasic\SilverlightClient\MainPage.xaml檔案,copy & paste即可!貼完code之後的XAML預覽如下圖
★步驟3b的程式碼在官方網站lost了,請大家去下載才可以把3b完成喔!
★參考網址
PS:後來發現3b不是lost,而是網頁本身有問題,網頁載入完成後那段XAML會看不見,如果懶得下載可以直接點選參考網址右上角的「輕量型」即可取得原版XAML!!
ADO.NET資料服務/Silverlight--建立Northwind資料服務
1.建立 ASP.NET Web 應用程式
3.建立資料服務
a)在方案總管按右鍵,新增項目「ADO.NET 資料服務」
Visual Studio 將建立新服務的 XML 標記和程式碼檔,根據預設,程式碼編輯器視窗隨即開啟 Northwind 加上副檔名 .svc.cs 或 .svc.vb 的檔案
b)變更Northwind.svc.vb中的資料模型之型別
將「TODO: 以您的資料類別名稱取代 [[class name]]」 這一段註解,替換成你剛剛建立的資料模型型別,也就是 NorthwindEntities
替換完成後會長這樣Inherits DataService(Of NorthwindEntities)
4.啟用資料服務的存取
在InitializeServic函式加入下列4行程式碼,指定可以存取的實體
ps:若全部開放則為config.SetEntitySetAccessRule("*", EntitySetRights.All)
5.測試
a) 按F5瀏覽器將自動開啟視窗
http://localhost:2616/northwind.svc
用IE6不能測試,請用IE7以上,用IE7以上及FF的人也請將RSS關閉,才能檢視下圖結果
b) 承上,輸入URI測試資料,傳回特定客戶 ALFKI 的全部訂單
★我們已經以 Northwind DB建立可存取的資料服務,並於 Web 瀏覽器中完成服務測試。 接下來要建立 Silverlight 用戶端應用程式專案,並在其中加入這個資料服務的參考:請看下一篇
★參考網址
2.定義資料模型
a)在方案總管按右鍵,新增項目「ADO.NET 實體資料模型」
b)選擇「從資料庫產生」
c)除了「資料表」其他都不要勾選
3.建立資料服務
a)在方案總管按右鍵,新增項目「ADO.NET 資料服務」
Visual Studio 將建立新服務的 XML 標記和程式碼檔,根據預設,程式碼編輯器視窗隨即開啟 Northwind 加上副檔名 .svc.cs 或 .svc.vb 的檔案
將「TODO: 以您的資料類別名稱取代 [[class name]]」 這一段註解,替換成你剛剛建立的資料模型型別,也就是 NorthwindEntities
替換完成後會長這樣Inherits DataService(Of NorthwindEntities)
4.啟用資料服務的存取
在InitializeServic函式加入下列4行程式碼,指定可以存取的實體
config.SetEntitySetAccessRule("Customers", EntitySetRights.AllRead)
config.SetEntitySetAccessRule("Orders", EntitySetRights.All)
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All)
config.SetEntitySetAccessRule("Products", EntitySetRights.All)
config.SetEntitySetAccessRule("Orders", EntitySetRights.All)
config.SetEntitySetAccessRule("Order_Details", EntitySetRights.All)
config.SetEntitySetAccessRule("Products", EntitySetRights.All)
ps:若全部開放則為config.SetEntitySetAccessRule("*", EntitySetRights.All)
5.測試
a) 按F5瀏覽器將自動開啟視窗
http://localhost:2616/northwind.svc
用IE6不能測試,請用IE7以上,用IE7以上及FF的人也請將RSS關閉,才能檢視下圖結果
b) 承上,輸入URI測試資料,傳回特定客戶 ALFKI 的全部訂單
http://localhost:2616/northwind.svc/Customers('ALFKI')/Orders
★我們已經以 Northwind DB建立可存取的資料服務,並於 Web 瀏覽器中完成服務測試。 接下來要建立 Silverlight 用戶端應用程式專案,並在其中加入這個資料服務的參考:請看下一篇
★參考網址
訂閱:
文章 (Atom)



















