本教程介紹如何使用 Entity Framework、語言集成查詢 (LINQ),以及如何對 Oracle 數據庫使用 Model-First 以生成數據定義語言 (DDL) 腳本。數據庫
大約 30 分鐘express
Microsoft Entity Framework 抽象關係、邏輯數據庫模式,而後向 .NET 應用程序呈現一個概念模式。它爲 .NET 開發人員提供對象關係映射。編程
LINQ 是一種 .NET 數據查詢語言,能夠查詢多種數據源,其中包括經過 LINQ to Entities 查詢的實體。瀏覽器
Model-First 使開發人員可以首先建立概念模型。而後由 Visual Studio 建立 Oracle DDL 腳本,從而根據概念模型生成關係數據庫模型。oracle
在本教程中,您將瞭解如何將 Oracle 數據庫和這三種技術與 Microsoft Visual Studio 和 Oracle Data Provider for .NET (ODP.NET) 結合使用。首先,您將使用 Entity Data Model Wizard 從現有 Oracle Database 模式建立一個實體數據模型 (EDM)。而後,使用三種不一樣方法查詢此 EDM:app
1. LINQ 查詢ide
2. 使用 lambda 表達式進行 LINQ 查詢,而後調用一個存儲過程對結果進行更新。
3. Entity SQL
接下來,您將調用一個經過函數導入功能添加到 EDM 中的存儲過程。該存儲過程將修改數據庫數據並經過一個隱式結果集返回結果。要返回結果集,須要在 .NET 配置文件中提供結果集參數信息。這樣,無需使用存儲過程便可向數據庫中插入數據或者刪除數據庫中的數據。
最後,將演示如何結合使用 Model-First 和 Oracle 數據庫。在 Model-First 模式中,開發人員首先建立一個 Entity Framework 對象關係數據模型。經過該數據模型,開發人員以 DDL 腳本形式自動生成 Oracle 關係數據庫模型。
開始本教程以前,您應該:
1. |
安裝 Microsoft Visual Studio 2010 以及 .NET Framework 4 或更高版本。 |
---|---|
2. |
安裝 Oracle Database 10.2 或更高版本,或者安裝 Oracle Database XE。 |
3. |
從 OTN 安裝 Oracle 11g Oracle Data Access Components (ODAC) 11.2.0.2.30 或更高版本。ODAC 下載包括本教程中將使用的 Oracle Developer Tools for Visual Studio 和 ODP.NET。 |
4. |
將這些文件解壓縮到工做目錄中。 |
1. |
要建立一個新的 .NET 控制檯應用程序來運行 Entity Framework 和 LINQ 應用程序表單,請打開 Visual Studio。單擊 File。選擇 New> Project。
|
---|---|
2. |
選擇 Visual C#:Windows > Console Application。將項目重命名爲 EntityFramework。單擊 OK。
|
3. |
項目 EntityFramework 打開。
|
在建立實體數據模型以前,須要一個使用 ODP.NET 的 Oracle 數據庫鏈接。要建立 Oracle 鏈接,您應該:
1. |
選擇 View > Server Explorer。
|
---|---|
2. |
在 Server Explorer 窗口中,若是您已經有了一個 HR 模式鏈接,則將其展開並鏈接到數據庫。例如,下面的屏幕截圖將 HR 模式識別爲 HR.ORCL。在 User name 和 Password 中輸入 HR,而後單擊 OK。跳到第 6 步。
|
3. |
若是您尚未 HR 鏈接,則在 Server Explorer 中右鍵單擊 Data Connections。選擇 Add Connection,而後選擇一個包括 HR 模式的 Data source name,例如,ORCL。在 User name 和 Password 中輸入 HR。選中 Save password。選擇 Default 做爲 Role,而後單擊 Test Connection。
|
4. |
在 Test connection succeeded 對話框中,單擊 OK。
|
5 . |
鏈接建立成功。展開 HR.ORCL
|
6 . |
如今,您要建立在本課程後面將用於執行更新和數據檢索的存儲過程。要將這些存儲過程添加到 HR.ORCL 數據鏈接中,右鍵單擊 HR.ORCL 並選擇 Query Window。
|
7 . |
打開工做目錄,轉到 files.zip 的解壓縮位置。找到 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY 存儲過程。將 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY 的代碼複製到 SQL Query Window 中,而後針對每一個存儲過程單擊 Execute Query ()。
|
8 . |
確保新添加的存儲過程顯示在 HR.ORCL > Procedures 節點下。
|
如今,您能夠基於 HR 的 DEPARTMENTS 和 EMPLOYEES 表以及剛添加的兩個新存儲過程建立實體數據模型。爲此,須要在項目中添加一個 EDM。使用 Entity Data Model Wizard 能夠自動生成 EDM。
1. |
在 Solution Explorer 窗口中,右鍵單擊 EntityFramework project 並選擇 Add > New Item。
|
---|---|
2. |
在 Add New Item 窗口中,選擇 ADO.NET Entity Data Model 並將其重命名爲 HRModel.edmx,而後單擊 Add。
|
3 . |
在 Entity Data Model Wizard 中,選擇 Generate from database 並單擊 Next。
|
4 . |
選擇 HR.ORCL 做爲數據鏈接。選擇 Yes, include the sensitive data in the connection string,將其命名爲 HREntities,而後單擊 Next。
|
5. |
從 Tables 中選擇 DEPARTMENTS 和 EMPLOYEES,從 Stored Procedures 中選擇 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY,而後單擊 Finish。 注: 若是不顯示這些存儲過程,請確保在本 OBE 前面已將它們添加到 OBE 中 — HR 模式中 Procedures 節點下的 INCREASE_SALARY_BY_10 和 UPDATE_AND_RETURN_SALARY。
|
6. |
HRModel EDM 成功建立,以下圖所示。
|
1. |
在 Solution Explorer 窗口中,右鍵單擊 References 並選擇 Add Reference。
|
---|---|
2. |
在 .NET 選項卡頁面中,選擇 Oracle.DataAccess 和 System.Data.Entity 第 4 版程序集並單擊 OK。
|
3. |
鍵入下圖中高亮顯示的命名空間引用。或者,您也能夠複製並粘貼該信息。從您的工做目錄中打開包含 Programcs.txt 的文件夾。而後,複製包含命名空間引用的代碼,並粘貼到 Program.cs 的頂部。 經過這些指令能夠訪問 ODP.NET、ADO.NET 和 Entity Framework 命名空間。
|
4. |
鍵入如下 .NET 代碼。這些代碼對剛建立的 EDM 執行一個 LINQ 查詢。而後訪問結果並輸出到屏幕上。該 LINQ 查詢檢索全部 EMPLOYEE_ID 值小於 max_id 變量的員工信息。 也能夠從 Programcs.txt 中複製 LINQ 查詢代碼並粘貼到 Program.cs 的 Main 語句後面。確保用一個右花括號來結束 USING 代碼塊。 單擊 (啓動調試)。
|
5. |
顯示 LINQ 查詢的輸出,這表示已成功執行對 Oracle 數據庫的 LINQ 查詢。
|
經過將 Oracle 存儲過程映射到 EDM 中的更新、插入和刪除操做,能夠對實體執行這些操做。
在本部分中,您將對 EMPLOYEE 實體執行一個使用 lambda 表達式的 LINQ 查詢,而後映射一個存儲過程以對全部選出的行執行更新操做。您將使用以前導入到 EDM 中的一個存儲過程。
1. |
首先,建立一個用於更新數據的存儲過程。當 .NET 嘗試更新數據時,映射的存儲過程將對 LINQ 選取的每行執行更新。 在 Solution Explorer 窗口中,選擇 HRModel.edmx 並單擊 Model Browser。 |
---|---|
2. |
在 HRModel.edmx 中,右鍵單擊 EMPLOYEE 實體並選擇 Stored Procedure Mapping。
|
3. |
在 Mapping Details - EMPLOYEE 窗口中,選擇 <Select Update Function>,而後選擇 INCREASE_SALARY_BY_10 存儲過程。
|
4. |
必須在實體和 Oracle 數據庫之間創建參數數據類型映射。從下拉列表中選擇 EMPLOYEE_ID 做爲 ID,選擇 SALARY 做爲 SAL。
|
5. |
鍵入下圖中高亮顯示的代碼,或在 Programcs.txt 中複製以 LINQ using lambda expressions -- 開頭的代碼塊,而後粘貼到 Program.cs 中已有代碼語句的後面。單擊 (啓動調試) 在應用程序中,您將注意到 result.SALARY 設置爲 result.SALARY。實際上,Entity Framework 執行的存儲過程將工資增長了 10。在下一部分中,您將對這些行執行查詢,以證實工資的確增長了 10。注:在查看了第一個結果集以後,按 Enter 鍵繼續。
|
6. |
LINQ 檢索這兩行數據,並經過執行上述存儲過程更新這兩行數據。文本顯示工資已經更新。
|
在本部分中,將查詢與前一部分相同的行,來證實存儲過程已成功更新這些行。您將使用 Entity Framework 中的另外一種查詢方法 Entity SQL 進行查詢。
1. |
鍵入下圖中高亮顯示的代碼,或在 Programcs.txt 中複製以 Entity SQL -- 開頭的代碼塊,而後粘貼到 Program.cs 中已有代碼語句的後面。單擊 (啓動調試),查看工資增長 10 的更新結果。 注:查看輸出以後,按兩下 Enter 繼續。
|
---|
經過 Entity Framework,開放人員可以定義本身的 .NET 方法來執行數據庫存儲過程。具體作法是在概念模型中建立函數導入,並將其映射到存儲過程。在本部分中,您將定義本身的方法並映射到 Oracle 存儲過程,用以執行更新。該存儲過程還將使用一個隱式結果集返回修改後的數據。開發人員在 .NET 配置文件中定義結果集元數據,以便 Entity Framework 正確檢索數據。
本部分介紹如何在 Entity Framework 中以編程方式修改 Oracle 數據庫數據。您將對 DEPARTMENTS 表執行插入和刪除操做。
1. |
您將使用 Visual Studio 的函數導入工具將存儲過程映射到用戶定義的 .NET 方法。因爲存儲過程返回一個隱式結果集,所以在使用該工具以前,須要在 .NET 配置文件中定義結果集元數據。 在 Solution Explorer 窗口中,打開 App.Config 文件。
|
---|---|
2. |
打開工做目錄,轉到 files.zip 的解壓縮位置,找到 AppConfig.txt 文件,而後打開。複製 <oracle.dataaccess.client> 代碼段,而後將其粘貼到 App.Config 文件的 </connectionStrings> 標記下面。如今,您已經定義了用於檢索存儲過程結果集的元數據。
|
3. |
接下來,將使用函數導入工具把一個 .NET 方法映射到 Oracle 存儲過程。右鍵單擊 HRModel.edmx 並選擇 Model Browser。
|
4. |
在 Model Browser 中,依次展開 HRModel.Store 和 Stored Procedures 節點。選擇 UPDATE_AND_RETURN_SALARY 存儲過程。您已經在建立 EDM 時導入了該存儲過程。
|
5. |
右鍵單擊 UPDATE_AND_RETURN_SALARY 並選擇 Add Function Import。
|
6. |
在 Add Function Import 窗口中,選擇 Returns a Collection Of 部分中的 Complex。存儲過程所返回的結果集中僅包含兩列,而不是完整定義的實體或標量值。 單擊 Get Column Information。將從 .NET 配置文件中檢索列信息。 要調用 .NET 中的方法,須要使用默認的 UPDATE_AND_RETURN_SALARY 函數導入名稱。 |
7. |
在 Stored Procedure Column Information 部分單擊 Create New Complex Type,而後單擊 OK。
|
8. |
在 Model Browser 中,您將看到 UPDATE_AND_RETURN_SALARY,它位於 HRModel.edmx > HRModel > EntityContainer:HREntities > Function Imports 下面。
|
9. |
在 Solution Explorer 窗口中,打開 Program.cs 文件。將 Programcs.txt 中以 Update salary using a stored procedure function import 開頭的代碼段鍵入或複製到已有代碼語句的後面,以下圖所示。您會看到,如今實體上下文中已經定義了一個 UPDATE_AND_RETURN_SALARY 方法。該方法將調用映射的存儲過程並返回隱式結果集。 單擊 (啓動調試)。 注:查看結果集以後,按三下 Enter 繼續。 |
10. |
.NET 方法返回員工姓名和更新後的工資。
|
1. |
將插入或刪除新部門的代碼鍵入或複製到 Program.cs 文件中。您能夠從 Programcs.txt 文件複製代碼,而後將其粘貼到 Program.cs 文件中已有代碼語句的後面。 程序註釋描述了每一個代碼段的做用。 單擊 (啓動調試)。
注:查看結果集以後,按 4 下 Enter 繼續。 控制檯將顯示是否成功添加或刪除了部門。
|
---|
在本部分中,您將爲 EMPLOYEE 實體添加一個新屬性。爲了在 Oracle 數據庫模式中以列的形式反映這個新屬性,Visual Studio 將重新的 EDM 生成 Oracle DDL 腳本。這些腳本將在 Oracle 數據庫上運行,以更新關係模型。
1. |
在 HRModel.edmx 中,選擇 EMPLOYEE 實體。要在 EMPLOYEE 實體中建立新屬性,請右鍵單擊該實體並選擇 Add > Scalar Property。將屬性命名爲 ADDRESS。
|
---|---|
2. |
要生成 DDL 腳本,請打開 HRModel 的 Properties 窗口。將 Database Schema Name 更改成 HR,並選擇 SSDLtoOracle.tt 做爲 DDL Generation Template。確保在 Database Generation Workflow property 中選擇了 Generate Oracle via T4(TPT).xaml,從而確保生成「每種類型一個表」的 DDL。 這些選項確保建立的 Oracle DDL 適合 HR 模式,每種類型表明一個單獨的數據庫表。
|
3. |
右鍵單擊 HRModel.edmx 並選擇 Generate Database from Model。
|
4. |
選擇 Generate Database from Model 以後,將彈出 Custom Workflow Security Warning 窗口,這是由於 Oracle 定義了一個自定義工做流。單擊 OK。
|
5. |
Generate Database Wizard 生成 DDL 腳本,供 Oracle 數據庫執行。能夠將這些腳本保存到一個文件中,以便稍後運行,例如,能夠經過做爲 Oracle Developer Tools for Visual Studio 一部份內置的 SQL*Plus 執行引擎來運行這些腳本。 請注意,該腳本建立和刪除數據庫對象。默認狀況下,執行刪除的腳本被註釋掉了。若是您要使用它們,請確保在執行前取消註釋。 |
在本教程中,您學習瞭如何:
關於 Oracle |Oracle 和 Sun | | 招聘 | 聯繫咱們 | 網站地圖 | 法律聲明 | 使用條款 | 您的隱私權利 |