顯示具有 Oracle 標籤的文章。 顯示所有文章
顯示具有 Oracle 標籤的文章。 顯示所有文章

2012年11月16日 星期五

Oracle ODAC + ASP.NET MVC 佈署

我在去年以及今年年初的時候有寫了一系列介紹使用 ODAC with Oracle Developer for Visual Studio,讓我們可以在 Visual Studio 開發 ADO.NET Entity Framework 時可以使用 Oracle 資料庫,那一陣子 ODAC 的版本是從 Release 3 開始講,之後做了一次的更新說明 Release 4,而隨著 Visual Studio 2012 的上市,所以 Oracle ODAC 也做了一次的更新,Release 5 於 2012-09-11 發佈,可以支援 Visual Studio 2012 以及 .NET 4.5。

但這是一連串都是在開發相關的事項中來做討論,而開發網站總是會有上線的一天,而網站佈署與網站開發都屬於專案開發的一部分,佈署網站本身就不是一件容易的事情,尤其專案的資料庫是使用 Oracle 以及專案的資料存取又是使用 EF + ODAC 的時候。

這一篇文章是補齊之前那一系列文章的內容,把最後的佈署也做個說明。

 


2012年4月2日 星期一

動態取得 Entity Framework 中 Entity 對應的 TableName


雖然說專案使用 Entity Framework 之後會比較少在程式中去下 SQL Command 做資料存取的執行,

但有時候還是免不了會有這樣需要的時候,如果說是少數幾個 Entity 才會去執行 SQL Command 的需求時,

其實會偷懶一下,直接就把整條 SQL Command 給寫死在程式當中,

但如果有些功能是屬於通用的時候,這種時候就不太可能把 SQL Command 給寫死,

如果是用字串的方式將每個 Entity 所對應的 TableName 給寫死,這樣的方式又顯得不夠聰明,

所以比較好一點的方式就是經由 Entity Framework 去動態取得 TableName。

2012年3月29日 星期四

Oracle for Entity Framework - LIKE 的查詢操作方式


資料庫使用 MS SQL Server 在 Entity Framework(EF)中如果要操作「like」查詢時,可以使用「Contains」,

例如以下的 LINQ Query:

var query = this.Products
    .Where(x=>x.ProductName.Contains("CH"))
    .OrderBy(x=>x.ProductID);

轉出的 SQL Command:

SELECT 
[Extent1].[ProductID] AS [ProductID], 
[Extent1].[ProductName] AS [ProductName], 
[Extent1].[SupplierID] AS [SupplierID], 
[Extent1].[CategoryID] AS [CategoryID], 
[Extent1].[QuantityPerUnit] AS [QuantityPerUnit], 
[Extent1].[UnitPrice] AS [UnitPrice], 
[Extent1].[UnitsInStock] AS [UnitsInStock], 
[Extent1].[UnitsOnOrder] AS [UnitsOnOrder], 
[Extent1].[ReorderLevel] AS [ReorderLevel], 
[Extent1].[Discontinued] AS [Discontinued]
FROM [dbo].[Products] AS [Extent1]
WHERE [Extent1].[ProductName] LIKE N'%CH%'
ORDER BY [Extent1].[ProductID] ASC

而當資料庫使用 Oracle 時,LINQ Query 的操作還是使用「Contains」,但有些地方還是不同的。

 

2012年1月26日 星期四

Oracle ODAC for Entity Framework + ASP.NET MVC 3 + MiniProfiler.MVC3


觀察 Entity Framework 轉換所產出的 SQL Command」這一篇文章當中有簡單介紹了在Oracle ODAC For EF 的情境下如何觀察SQL Command,然而並不是每個方式都管用,而且有的方式會需要在偵錯模式下才能觀察(如使用Entity Visualizer),而之前也曾經介紹過一個可以用來偵測ASP.NET MVC執行效能的套件「MVC-Mini-Profiler」,這一個套件除了偵測執行效能外,有使用Entity Framework的話也可以偵測EF所產生的SQL Command,「ASP.NET MVC 3 + MiniProfiler.MVC3 偵測執行效能」文章裡所使用的資料庫是MS SQL Server,而當資料庫改使用Oracle而EF Provider也使用了Oracle ODAC for EF呢?

這一篇文章就來看看在使用Oracle ODAC for EF的情境下使用MVC-Mini Profiler是否可以偵測到EF所產生的SQL Command。


2012年1月6日 星期五

觀察 Entity Framework 轉換所產出的 SQL Command

在前一篇文章「LINQPad + Oracle ODAC for Entity Framework」介紹了可以藉由LINQPad載入專案組件後就可以在LINQPad中操作LINQ Query,以達到程式實作前的測試操作,如果專案所使用的資料庫是 MS SQL Server 的話,在LINQPad中可以直接觀察EF所產出的 SQL Command,但要是專案所使用的資料庫是 Oracle,那麼在LINQPad就無法看到EF所產出的SQL Command,這種情況下就必須要回到Visual Studio中於偵錯模式下進行EF產出SQL Command 的觀察了,所以在本篇文章中將會說明幾種在Visual Studio的偵錯模式下觀察由Entity Framework所產出的SQL Command。

註:本篇將會著重於 Oracle ODAC for Entity Framework 情境下的解決方式,而有關使用 MS SQL Server 的專案,可以參考以下文章:

Jerry - 我的Coding :查看LINQ Expression編譯後的SQL語法

 


2012年1月5日 星期四

LINQPad + Oracle ODAC for Entity Framework

如何在 LINQPad 載入使用 Oracle ODAC for Entity Framework 開發的專案組件來執行查詢。

我在這個部落格的很多文章都會使用LINQPad來做操作說明,尤其是Entity Framework的相關文章,

例如:

Oracle ODAC 11.2 Release 4 (11.2.0.3.0) - Includes support for Entity Framework and LINQ

Oracle ODAC for Entity Framework 關連資料查詢的幾種不同方式

在文章中都主要是用LINQPad來操作以及說明,並且建議大家能夠使用LINQPad來做程式實作前的測試操作,但是很多人都反應說,他們不清楚要怎麼在LINQPad去加入已開發專案的專案組件然後使用,所以這一篇文章就來做個說明,讓大家了解如何在LINQPad中去加入已開發專案的專案組件然後進行各種的LINQ操作。

P.S.

而專案的實體資料模型的資料來源如果是使用MS SQL Server,也是同樣的操作模式,也是可以參考此篇文章的作法。


2012年1月2日 星期一

Oracle ODAC for Entity Framework 關連資料查詢的幾種不同方式

前篇文章「ODAC 11.2 Release 4 (11.2.0.3.0) - Includes support for Entity Framework and LINQ」,在文末的「其他的查詢運算操作」有介紹使用「join + group」的方式來查詢關連資料,而另外也測試了幾種不同的查詢方式,在本篇文章就來看看這幾種不同的查詢方式。



2012年1月1日 星期日

Oracle ODAC 11.2 Release 4 (11.2.0.3.0) - Includes support for Entity Framework and LINQ

Oracle在 2011-12-28 發佈了最新一版的 ODAC with Oracle Developer Tools for Visual Studio,

image

ODAC 11.2 Release 3 與 ODAC 11.2 Release 4 更新相隔了一年,而這一次讓我注意到的是 ODAC 11.2 Release 4(11.2.0.3.0) 包含了對 Entity Framework 的支援,也就是說原本還在 BETA 3 的ODAC for MS Entity Framework and LINQ to Entities 已經納入正式版了,所以有使用到 Oracle 資料庫開發的專案,想要在專案中使用Entity Framework技術是已經有 Oracle 所發佈的正式支援,然而在之前文章「ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 4」最後所提到的問題是否在這個版本有獲得解決呢?

在本篇文章我們就來仔細的瞧瞧!

2011年12月29日 星期四

Enterprise Library DAAB + Oracle:Provider 使用 ODP.NET


一般來說專案的資料庫如果是使用 Oracle,大部分的狀況下存取資料庫都會是使用 System.Data.OracleClient,但是在兩年多前微軟就已經宣布 System.Data.OracleClient 在 .NET 4.0 雖然還會支援這個型別,但是在未來的 .NET Framework 版本將會移除,在 .NET 4.0 之中會被標記為「Deprecated (已過時的)」

MSDN Blogs – ADO.NET team blog : System.Data.OracleClient Update

http://blogs.msdn.com/b/adonet/archive/2009/06/15/system-data-oracleclient-update.aspx

黑暗執行緒 - System.Data.OracleClient將走入歷史

http://blog.darkthread.net/post-2010-05-14-bye-ado-net-oracleclient.aspx

雖然說現階段還是可以繼續使用 System.Data.OracleClient 於專案中而且編譯也沒有問題,但是就如黑暗大所說的,還是改用 Oracle 官方所提供的「ODP.NET from Oracle」,早期 Enterprise Library DataAccess Application Block (DAAB) 並無支援使用 ODP.NET,一直到了 EntLib 4.1 之後才有支援使用 ODP.NET,接下來本篇將會說明如何讓 Enterprise Library 5.0 DAAB 使用 ODP.NET 的設定方式。

2011年12月18日 星期日

使用Lazy<T> … 在非ORM專案(Oracle)的應用


現在很多專案都已經使用Linq to SQL 或是 ADO.NET Entity Framework或者是其他的ORM Framework來做為專案中物件與資料存取對應的Solution,

就單純的以.NET Framework所推出的Linq to SQL 與ADO.NET Entity Framework來說,在資料庫中將各個Table的關連性給定義好之後,

到了程式設計階段時,使用工具產生Linq to SQL或是EF的定義模型時就會一併定義對應物件的關聯性,

這樣一來有關連的物件就可以取得其關連物件的物件集合,而且這個關連物件集合讀取就是以延遲載入的方式來使用。

2011年12月3日 星期六

簡述 Oracle + Enterprise Library 5.0 Data Access Application Block 的操作


接觸並且使用 Enterprise Library (以下簡稱為 EntLib )在專案中開發已經有很長一段時間了,在 Linq to SQL, ADO.NET Entity Framework 出現之前的對資料庫存取都會使用 EntLib 的 Data Access Application Block (DAAB),而不是使用既有的 ADO.NET 操作,使用 DAAB 除了可以讓程式碼撰寫的行數減少一些之外,DAAB 對於 ADO.NET的操作也做了優化,所以使用 DAAB 做資料存取的動作是會比使用原生 ADO.NET 操作方式來得方便,但是不要認為說使用DAAB就可以不用管ADO.NET囉!因為DAAB的內容都還是繞著ADO.NET操作上打轉,DAAB把我們在使用ADO.NET操作的方法都做了包裝。

原本打算要寫一系列有關 Enterprise Library 的文章,但是一直沒有時間好好的規劃撰寫的方向與架構,而且這兩三年來在專案開發上也都是使用 Linq To SQL 或是 ADO.NET Entity Framework 來做為資料存取的 solution,以致於很少有機會再去接觸以及使用 EntLib ……

而最近一個專案的關係,讓我又重拾 EntLib 的使用,因為這個專案使用的是 Oracle 資料庫,原本打算使用 ODAC for Entity Framework,但是……客戶的技術思維還停留在 .NET 2.0 的時代,不要說什麼是 ORM,連什麼叫做LINQ都不知道了,客戶為了日後他們自己維護的方便,所以堅持使用傳統的ADO.NET方式來做為資料存取的解決方案,也就是因為這樣讓我決定使用 EntLib 的 DAAB 來操作對 Oracle 資料庫的存取。


2011年11月20日 星期日

ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 4

 

Oracle Data Access Components (ODAC) for Microsoft Entity Framework and LINQ to Entities

前面花了三篇的篇幅從安裝Oracle XE、使用管理Oracle XE以及將Northwind資料庫安裝到Oracle XE中,這些的動作都是為了在開發.NET專案時去使用Entity Framework對Oracle資料庫進行資料存取的操作,而最重要的關鍵就在於 ODAC for Microsoft Entity Framework and LINQ to Entities。

Oracle總算是推出了對於Entity Framework的Provider,雖然直到現在還是Beta版,但至少也是一項的選擇,不然以往使用Oracle資料庫的專案,無法使用LINQ to Entities來操作,總覺得做Oracle的專案真的很麻煩,雖然說有商業套件有提供Provider讓開發者可以透過Entity Framework去對Oracle做存取,但是商業套件…尤其又是存取Oracle,那麼就是需要花一大筆錢才能夠獲得解決,當公司擺明就是不想花錢買授權的時候,就是我們開發者頭痛的時候了,接下來就看看這個 ODAC for Microsoft Entity Framework and LINQ to Entities…

2011年11月19日 星期六

ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 3

 

安裝北風資料庫 ( Northwind ) 到 Oracle 中

我們一開始接觸微軟的 MS SQL Server 時,最先接觸到的範例資料庫就是 Northwind,而有很多的文章範例都是使用 Northwind 為資料來進行各種的功能操作,而既然之前「ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 2」的文章內容中已經把 Oracle 11g XE 給安裝以及建立好要使用的 Tablespace,接下來的動作當然就是把 Northwind 的 Table 與資料給安裝到 Oracle 11g XE。


2011年11月13日 星期日

ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 2


使用及管理Oracle 11g Express Edition,使用Oracle SQL Developer, Navicat Lite

資料庫裝好之後就是要來用,但是 Oracle 11g XE 所預設的管理介面看起來實在太過於陽春了,又或許應該說,我不會用這個管理介面來管理安裝好的資料庫,因為 Oracl XE 資料庫的安裝就如同 MS SQL Express 安裝一樣,安裝好只是把資料庫的 Instance 裝好而已,要一個 GUI 的管理工具就必須另外安裝,MS SQL Server Express 就有一個「MS SQL Server Management Studio Express」的GUI工具,而Oracle資料庫則是有個官方版的「Oracle SQL Developer」,另外也有個相當好用的第三方管理工具「Navicat Lite」,上面兩種在使用後的感覺是,Oracle SQL Developer 比較佔資源,而Navicat Lite則是比較輕巧些。


ASP.NET MVC + Oracle 11g XE + Entity Framework. Part 1

 

安裝「Oracle Database 11g Express Edition」

使用 .NET 開發的專案雖然大多數所搭配的資料庫都是 MS SQL Server,但還是會碰到會使用到 Oracle 資料庫的時候,通常這樣類型的專案於開發時應該都會配置一個與正式環境一樣的 Oracle 測試資料庫,但如果在一些特殊的狀況下:多人開發、測試資料庫只能測試用而不能開發用 … etc

這個時候不會建議在程式設計師的開發環境下去安裝 Oracle 資料庫,畢竟一台電腦安裝太多的軟體難免會出現例外狀況,所以在這個時候會比較建議開發者去準備另外一台電腦來安裝 Oracle 資料庫,或者是開發者電腦環境允許的情況下(記憶體 > 4GB)就十分建議建立一個虛擬機器,然後在 VM 上安裝 Oracle 資料庫。

提醒

千萬不要使用 Google Talk (Hangouts) 或 Facebook 及時通訊與我聯繫、提問,因為會掉訊息甚至我是過了好幾天之後才發現到你曾經傳給我訊息過,請多多使用「詢問與建議」(在左邊,就在左邊),另外比較深入的問題討論,或是有牽涉到你實作程式碼的內容,不適合在留言板裡留言討論,請務必使用「詢問與建議」功能(可以夾帶檔案),謝謝。