新聞中心
最近收集了很多關(guān)于實(shí)體框架的知識(shí),這里我無(wú)私的奉獻(xiàn)給大家,希望對(duì)大家有幫助。ADO.NET實(shí)體框架提供了相應(yīng)的工具,以便根據(jù) 實(shí)體數(shù)據(jù)模型 (EDM) 的概念性架構(gòu)定義語(yǔ)言 (CSDL) 文件自動(dòng)生成對(duì)象層。可以對(duì)這些數(shù)據(jù)類(lèi)進(jìn)行不同程度的自定義,具體取決于應(yīng)用程序的要求。您也可以修改自己的自定義數(shù)據(jù)類(lèi),以將其用于 EDM。當(dāng)您從現(xiàn)有應(yīng)用程序升級(jí)數(shù)據(jù)類(lèi)以使用 實(shí)體框架 時(shí),或者當(dāng)您希望對(duì)創(chuàng)建數(shù)據(jù)類(lèi)的方式進(jìn)行更多控制時(shí),這很有用。

成都創(chuàng)新互聯(lián)是一家專(zhuān)業(yè)提供沅江企業(yè)網(wǎng)站建設(shè),專(zhuān)注與成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站、H5網(wǎng)站設(shè)計(jì)、小程序制作等業(yè)務(wù)。10年已為沅江眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
擴(kuò)展分部數(shù)據(jù)類(lèi)
EDM 中定義的類(lèi)型不像面向?qū)ο缶幊讨惺褂玫念?lèi)那樣具有關(guān)聯(lián)的方法。相反,它們只包含 EDM 中定義的屬性。您可以通過(guò)擴(kuò)展已生成的分部數(shù)據(jù)類(lèi)向?qū)ο笾刑砑庸δ?。在通過(guò) 實(shí)體數(shù)據(jù)模型工具生成數(shù)據(jù)類(lèi)時(shí),將以分部類(lèi)的形式實(shí)現(xiàn)這些數(shù)據(jù)類(lèi)。分部類(lèi)將類(lèi)的定義拆分到兩個(gè)或更多個(gè)源文件中。每個(gè)源文件包含類(lèi)定義的一部分,當(dāng)編譯應(yīng)用程序時(shí),將組合所有部分。有關(guān)更多信息,請(qǐng)參見(jiàn)分部 (Visual Basic) 或分部(類(lèi)型)(C# 參考)。
擁有分部類(lèi)后,您能夠用單獨(dú)源文件中的自定義方法和屬性擴(kuò)展這些類(lèi),而無(wú)需擔(dān)心在已生成的文件刷新時(shí)丟失您的自定義。有關(guān)更多信息,請(qǐng)參見(jiàn)如何:自定義生成的數(shù)據(jù)對(duì)象(實(shí)體框架)。
自定義業(yè)務(wù)邏輯
在使用生成的數(shù)據(jù)類(lèi)時(shí),可以在某些對(duì)象服務(wù)操作(例如,更改屬性或關(guān)系)過(guò)程中調(diào)用自定義業(yè)務(wù)邏輯。此業(yè)務(wù)邏輯可能包括在更改屬性或調(diào)用 SaveChanges 時(shí)創(chuàng)建附加驗(yàn)證或登錄。通過(guò)處理由對(duì)象服務(wù)引發(fā)的事件,或者通過(guò)定義在更改屬性時(shí)調(diào)用的自定義分部方法,可以調(diào)用自定義業(yè)務(wù)邏輯。
自定義數(shù)據(jù)類(lèi)
有某些情況下,只通過(guò)添加方法和屬性來(lái)擴(kuò)展分部類(lèi)可能無(wú)法提供足夠的靈活性。假定現(xiàn)有一個(gè) .NET Framework 應(yīng)用程序使用 ADO.NET 將數(shù)據(jù)庫(kù)中的數(shù)據(jù)加載到 CLR 對(duì)象中,以供該應(yīng)用程序使用。這些對(duì)象可能包含必須保留在對(duì)象層中的有價(jià)值的自定義和業(yè)務(wù)邏輯。這些自定義可能會(huì)妨礙您將應(yīng)用程序遷移為使用實(shí)體框架。您可能還希望對(duì)實(shí)體類(lèi)型進(jìn)行更多的控制,而不僅僅是擴(kuò)展生成的分部類(lèi)。
#T#將自定義數(shù)據(jù)類(lèi)與 EDM 一起使用的建議方式是從 EntityObject 繼承。Entity Framework 提供了一組接口,如果不能從 EntityObject 繼承,或需要比框架更多的獨(dú)立性時(shí),可以實(shí)現(xiàn)這些接口以將自定義數(shù)據(jù)類(lèi)用于 EDM。有關(guān)更多信息,請(qǐng)參見(jiàn)實(shí)現(xiàn)自定義數(shù)據(jù)類(lèi)接口(實(shí)體框架)。在使用自定義數(shù)據(jù)類(lèi)時(shí),必須向自定義數(shù)據(jù)類(lèi)和屬性應(yīng)用屬性,并且在更改屬性時(shí)通知對(duì)象上下文。
生成的數(shù)據(jù)類(lèi)從 EntityObject 或 ComplexObject 繼承。如果您必須將自定義數(shù)據(jù)類(lèi)與 EDM 一起使用,建議的方式是修改您的數(shù)據(jù)類(lèi),以便從這兩個(gè)基類(lèi)繼承。通過(guò)這種方式,自定義數(shù)據(jù)類(lèi)將受益于 EntityObject 所提供的更改跟蹤和關(guān)系管理功能。
在從 EntityObject 和 ComplexObject 繼承時(shí),請(qǐng)記住以下要點(diǎn):
◆類(lèi)和屬性名稱(chēng)必須與 EDM 的概念性架構(gòu)定義語(yǔ)言 (CSDL) 文件中定義的實(shí)體類(lèi)型和屬性名稱(chēng)相匹配。如果這些名稱(chēng)不匹配,您必須更改數(shù)據(jù)類(lèi)和屬性的名稱(chēng),或者更新 CSDL 和關(guān)聯(lián)的映射規(guī)范文件MSL 中的名稱(chēng)。有關(guān)更多信息,請(qǐng)參見(jiàn)如何:自定義實(shí)體數(shù)據(jù)模型以使用ADO.NET自定義對(duì)象(實(shí)體框架)。
◆CSDL 中定義的實(shí)體類(lèi)型的每個(gè)屬性,都必須在自定義數(shù)據(jù)類(lèi)中有一個(gè)關(guān)聯(lián)的屬性。自定義數(shù)據(jù)類(lèi)可以具有其他未映射到 CSDL 中定義的屬性的屬性。
◆您必須向自定義數(shù)據(jù)類(lèi)和屬性應(yīng)用屬性。這些屬性在對(duì)象和 CSDL 之間提供顯式映射。有關(guān)更多信息,請(qǐng)參見(jiàn)對(duì)象-實(shí)體映射屬性(實(shí)體框架) 和如何:將ADO.NET自定義對(duì)象映射到實(shí)體(實(shí)體框架)。
◆若要使對(duì)象服務(wù)能夠跟蹤對(duì)ADO.NET自定義對(duì)象進(jìn)行的更改,必須使用 EntityObject 更改報(bào)告方法按照特定模式報(bào)告這些更改。有關(guān)更多信息,請(qǐng)參見(jiàn)報(bào)告自定義數(shù)據(jù)類(lèi)中的更改(實(shí)體框架)。
◆Entity Framework 工具還生成其他能夠簡(jiǎn)化對(duì)象編程的類(lèi)。對(duì)自定義數(shù)據(jù)類(lèi)使用此代碼很有用。有關(guān)更多信息,請(qǐng)參見(jiàn)如何:將對(duì)象服務(wù)用于自定義對(duì)象(實(shí)體框架)。
◆在從 EntityObject 繼承時(shí),必須通過(guò)從 ComplexObject 繼承來(lái)實(shí)現(xiàn)復(fù)雜類(lèi)型。有關(guān)更多信息,請(qǐng)參見(jiàn)復(fù)雜類(lèi)型對(duì)象(實(shí)體框架)。
文章標(biāo)題:全面學(xué)習(xí)ADO.NET自定義對(duì)象
瀏覽路徑:http://www.5511xx.com/article/coeijjc.html


咨詢(xún)
建站咨詢(xún)
