EF 基礎篇(一) 基本概念

2021-10-10 22:50:59 字數 2600 閱讀 5777

3. 版本資訊

總結entity framework 技術的應用中 ,可針對資料庫中各個表按照1:1 對映生成模型和對映資訊 ,在**中直接對錶中資料進行增、刪、改、查操作,但在實際應用中,這種簡單的處理方式不利於進一步降低程式開發工作量,部分情況還違背了「程式開發以應用為中心的概念模型來工作」的理念 ,物件的概念不清晰。為此 ,對幾種常用的資料庫情景的建模方法進行介紹。

在帶有有效栽花的多對多關聯式資料庫中 ,關係表除了主鍵外 ,還有其他資料字段。在這種關係中 ,直接把錶對映到實體模型中 ,兩實體表自動建立對應的實體型別 ,而關係表也被對映成為一實體型別 ,在此實體型別中除了原有屬性名 ,還有對應兩實體表的導航屬性 ,可分別通過 1 對多關係進行物件導航。

對於分類表之類的自引用表 ,把錶對映成為實體型別後 ,其中將包含兩個導航屬性 分別對應父、子物件 ,其中父物件為 1 端 ,多端為子物件集合 ,因此分別把 1 端改名為父端名稱如parent category,多端改名為子物件集合名稱如 sub categories。由此兩導航屬性可方便地訪問到對應物件。

在資料庫設計過程中 ,當乙個實體的資料由於各種原因為分割在不同表中 ,而程式開發需要把實體所有資料集合在乙個實體型別中。對於這種跨表實體的情況 ,建模時首先把所有的表都對映到實體模型中 ,然後調整實體型別 ,把主要表之外的其它表對映實體類中除主鍵對應屬性外的所有屬性複製到主要表對映實體型別中 ,然後刪除主要表對映實體型別中的所有導航屬性和其它表實體型別 ,在刪除其它表實體型別時 ,不刪除對映儲存模型中的表 ,最後 ,在剩下的這乙個表對映實體型別中 ,新增複製得到的所有屬性的對映關係 ,分別對映到對應的表中的列。在實體操作過程中 ,對映關係能自動分別處理不同表中的對應資料。

在表中如果有部分字段內容較多並且不常使用 ,為提高程式效能 ,訪問表時,一般只訪問表中的部分字段, 為此 ,建模時必須把錶分割成多個實體。首先把錶對映成一般實體型別 ,然後在設計器中建立新實體型別 ,新增對應原表中主健的屬性 ,再把原對映實體型別中不需要的屬性通過「剪下 / 貼上」方法移動到新實體型別中 ,並把新實體型別中的所有屬性對映到原表對應字段 ,然後在原實體型別中新增到新實體型別的 1對1(或 1 對 0.1)關聯關係 ,最後 ,在新增以新實體型別為主體的到原實體型別的引用約束。通過實體型別訪問資料時 ,兩實體型別物件分別訪問其屬性對應的字段資料。

資料庫建模完成後 ,對於有些表儲存另一表中額外資訊的情況 ,可以針對這些表建立派生的類體系結構。首先,把所有表對映到實體模型中,分別對映成乙個實體型別 ,然後刪除實體型別之間的關聯,再為基類(business)新增繼承 ,分別設定派生類為retails 和 e commerces,再刪除派生類中的 business id 屬性 ,則根據表的結構完成類的體系結構建模 ,對 retails 和 e commerces 型別物件的操作會自動訪問庫表 retails、e commerces 及對應的 business表中對應記錄。

對於常見的辦公自動化系統資料庫 ,由於員工型別不同 ,而薪水制度不同 ,其中 employee type 值為 1 則為臨時工 ,薪水按小時計算 ,wage 字段記錄其每小時薪水 ,salary 欄位為無效 數 據 ,如 果 employee type 值 為 2 則 為 正 式 員 工 ,薪 水 按 月計算 ,salary 字段記錄其每月薪水 ,wage 字段資料無效。為更好地實現向應用程式設計 ,分別建立臨時工和正式員工兩種型別 ,但兩種型別的資料都儲存在 employees 表中。建模過程首先把 employees 表對映到實體模型中 ,成為 employees 類 ,然後新增新實體 hourly employee,指定基類為 employees,然後通過「剪下 / 粘 貼 」 把 employees 中 的 wage 屬 性 移 動 到 hourly employee中 ,用 同 樣 的 方法新增實體 full time employee 型別;再在hourly employee 實體中 ,新增對映條件 :「employee type = 1」,在full time employee 實體中新增對映條件 :「employee type = 2」,然後設定 employees 型別為抽象類,並刪除其中的 employee type 屬性,則hourly employee和full time employee自動處理 employee type 欄位的值 ,並能自動根據記錄建立對應型別的物件。

ado.net entity framework自.net 3.5以來就被整合於.net中,最新版本是entity framework 6.1.3。

版本支援.net

發布情況

備註entity framework 3.5

2.0+

包含於.net 3.5中

支援edmx生成,通過擴充套件可支援poco類的生成

entity framework 4.0

4.0+

包含於.net 4.0中

entity framework 4.x

4.0+

可通過nuget獲取

支援database first、model first、code first三種生成模式

entity framework 4.5

4.5+

整合於.net 4.5中

entity framework 5.x

4.5+

可通過nuget獲取

支援列舉字段,效能有較大提公升,支援.net 4.0的版本為entity framework 4.4

未完待續…

Aspose 基礎篇(一) 基本概念

總結 示例 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。如下 示例 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns impo...

FarPoint 基礎篇(一) 基本概念

總結 示例 pandas 是基於numpy 的一種工具,該工具是為了解決資料分析任務而建立的。如下 示例 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns impo...

Axure RP 基礎篇(一)基本概念

4.入門介紹 axure rp是一款專業的快速原型設計工具。axure 發音 ack sure 代表美國axure公司 rp則是rapid prototyping 快速原型 的縮寫。axure rp是美國axure software solution公司旗艦產品,是乙個專業的快速原型設計工具,讓負責...