掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
由于他們不能針對(duì)操作更改ADO.NET錯(cuò)誤集合的問題,提供完整的解決方案,他們將不會(huì)ADO.NET錯(cuò)誤給開發(fā)者帶來任何東西。開發(fā)人員不得不在Entity Framework之上建立自己的ORM,如果他們確實(shí)要ADO.NET錯(cuò)誤在上下文外部操作數(shù)據(jù)的話。

本文的余下部分是相當(dāng)冗長的示例,它關(guān)于如何使用新API來執(zhí)行更改跟蹤。這包括創(chuàng)建接口(例如IEntityWithChanges)、像GetEntityState那樣使用手寫的方法進(jìn)行映射、或者在一個(gè)方法中兩者都使用,該方法接收上下文對(duì)象、實(shí)體狀態(tài)名稱、ADO.NET錯(cuò)誤實(shí)體圖的方法與實(shí)體狀態(tài)映射等。記住,這只適用于保存更改,你仍要先以某種方式跟蹤該更改。
Ayende Rahien解釋了它是如何完成的:
下面是用NHibernate的處理方法:
session.Merge( entityFromPresentationLayer );
Frans' LLBLGen支持類似的功能。換句話說,這是數(shù)據(jù)訪問框架做的事,而非開發(fā)人員。
談到Frans Bouma,下面是他總結(jié)的一些情況,
所有那些使用數(shù)據(jù)集的開發(fā)者,如何確信EF是正確方式呢?數(shù)據(jù)集在什么時(shí)候解決過這個(gè)問題的呢,從一開始嗎?ADO.NET錯(cuò)誤更別提是不是那些大量競(jìng)爭(zhēng)性的O/R映射器框架?我想核心的問題是設(shè)計(jì)框架的錯(cuò)誤,從框架開發(fā)人員的角度來看:ADO.NET錯(cuò)誤在你編寫框架時(shí)。
有兩種“正確點(diǎn)”——來自框架開發(fā)者的觀點(diǎn)(Point Of View,POV)和來自框架用戶的觀點(diǎn)。核心的錯(cuò)誤是假設(shè)這兩種“正確點(diǎn)”實(shí)際上是一樣的,更糟糕的是:假設(shè)框架開發(fā)者關(guān)于“正確點(diǎn)”的觀念,即是框架用戶所想。#t#
在ADO.NET錯(cuò)誤中,雖然對(duì)于服務(wù)器端的游標(biāo)不提供任何支持,但這不意味著你就不能使用游標(biāo).實(shí)際上,你所需要做的步驟是在.NET中輸入ADO庫.你只需在references node上單擊右鍵,就可以在你自己的程序里運(yùn)行本地ADO 對(duì)象.
但是我個(gè)人認(rèn)為,在你想轉(zhuǎn)向.NET時(shí),請(qǐng)慎重考慮. 首先,請(qǐng)務(wù)必完全輸入ADO, ADO.NET錯(cuò)誤這不會(huì)花費(fèi)太多時(shí)間和精力,這是向.NET邁出的第一步,.但是,這僅僅是萬里長征的第一步而且也是通向.NET必須的一步. .NET的真正附加值是基于一個(gè)均勻的,持續(xù)穩(wěn)定的接口以及本地classes的廣為應(yīng)用之上的.關(guān)于COM libraries是可以被支持的,合理的,但不被鼓勵(lì)的,因?yàn)樗鼉H僅是個(gè)短期解決方案,或者是一個(gè)過渡步驟。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流