對(duì)于ADO.NET模型進(jìn)行圖示介紹
ADO.NET模型作為下一代的開(kāi)發(fā)程序,代號(hào)為Orcas。最近微軟推出了ADO.NET模型,涵蓋了VS之前版本的所有功能,快捷鍵也基本完整,與將要發(fā)布的RTM版不會(huì)有什么太大的差別。
1. 如果某個(gè)應(yīng)用程序只處理Employees的信息,但我們必須將邏輯數(shù)據(jù)關(guān)系標(biāo)準(zhǔn)化。這樣我們就不得不去關(guān)注數(shù)據(jù)庫(kù)表與表之間的關(guān)系(比如雇員的聯(lián)系信息和姓名在不同的表中),我們需要人為地在兩個(gè)表中做內(nèi)聯(lián)交叉查詢以得到正確的數(shù)據(jù)。
2. 這里該應(yīng)用程序僅僅是處理全職雇員(SalariedFlag=1),理想的情況是,我們不應(yīng)看到其他類(lèi)型的雇員信息。然而實(shí)際上所有的雇員信息都在一個(gè)數(shù)據(jù)庫(kù)表中,他們是用一個(gè)"SalariedFlag"字段來(lái)區(qū)分的。ADO.NET模型意味著我們需要關(guān)注如何將不同類(lèi)型的雇員加以區(qū)分。理想的情況是這樣的:假如我們只需要處理某個(gè)數(shù)據(jù)子集,系統(tǒng)只需要呈現(xiàn)這部分子集的數(shù)據(jù)。開(kāi)發(fā)人員應(yīng)當(dāng)能夠通過(guò)聲明來(lái)指定哪個(gè)是需要的數(shù)據(jù)子集。#t#
綜合地說(shuō),首先,關(guān)系數(shù)據(jù)模型不能直接匹配應(yīng)用程序?qū)嶋H的數(shù)據(jù)模型。其次,關(guān)系數(shù)據(jù)模型不能滿足應(yīng)用程序的實(shí)際需要,比如應(yīng)用程序還需要一些非功能性的需求,這些需求包括操作,數(shù)據(jù)擁有關(guān)系,性能和安全。
為了解決如上問(wèn)題,ADO.NET引入了Entity Framework,它包含了數(shù)據(jù)模型以及一些設(shè)計(jì)時(shí)和運(yùn)行時(shí)的服務(wù)。ADO.NET模型通過(guò)Entity Framework提供的更高抽象層,應(yīng)用程序的數(shù)據(jù)模型就可以直接和數(shù)據(jù)庫(kù)的關(guān)系數(shù)據(jù)模型交互。
三個(gè)實(shí)體類(lèi)型,ADO.NET模型分別是SalesPerson,SalesOrder和StoreSalesOrder。其中StoreSalesOrder繼承自SalesOrder。
一個(gè)關(guān)系: SalesOrder 和 SalesPerson 之間的關(guān)系。
兩個(gè)實(shí)體集(entity-sets):SalesOrders 和 SalesPeople。 實(shí)體集SalesOrders 擁有SalesOrder和StoreSalesOrder兩個(gè)實(shí)體類(lèi)型。
看看上面的模型視圖已經(jīng)更接近應(yīng)用程序需求了。ADO.NET模型其中SalesPerson的信息已經(jīng)不再分布在不同的數(shù)據(jù)表中了,同時(shí)也沒(méi)有了主從鍵了。