十年網(wǎng)站開(kāi)發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶(hù) + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專(zhuān)業(yè)推廣+無(wú)憂售后,網(wǎng)站問(wèn)題一站解決
這篇文章主要講解了“ADO.NET如何自定義對(duì)象”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“ADO.NET如何自定義對(duì)象”吧!

成都創(chuàng)新互聯(lián)自2013年創(chuàng)立以來(lái),是專(zhuān)業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站建設(shè)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元雁山做網(wǎng)站,已為上家服務(wù),為雁山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:18982081108
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í),這很有用。
擴(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í),將組合所有部分。
擁有分部類(lèi)后,您能夠用單獨(dú)源文件中的自定義方法和屬性擴(kuò)展這些類(lèi),而無(wú)需擔(dān)心在已生成的文件刷新時(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)。
將自定義數(shù)據(jù)類(lèi)與 EDM 一起使用的建議方式是從 EntityObject 繼承。Entity Framework 提供了一組接口,如果不能從 EntityObject 繼承,或需要比框架更多的獨(dú)立性時(shí),可以實(shí)現(xiàn)這些接口以將自定義數(shù)據(jù)類(lèi)用于 EDM。在使用自定義數(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 之間提供顯式映射。
◆若要使對(duì)象服務(wù)能夠跟蹤對(duì)ADO.NET自定義對(duì)象進(jìn)行的更改,必須使用 EntityObject 更改報(bào)告方法按照特定模式報(bào)告這些更改。
◆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)型。
感謝各位的閱讀,以上就是“ADO.NET如何自定義對(duì)象”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)ADO.NET如何自定義對(duì)象這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!