2012-04-11 92 views
2

我們當前的應用程序使用智能對象樣式來處理數據庫。我們正在考慮改用PetaPoco的可行性。查看這些功能我注意到,您可以添加屬性以使CRUD對象更容易。添加這些屬性是否有任何我應該注意的負面影響?向POCO添加PetaPoco屬性是否有任何負面影響?

有沒有人發現不使用這些裝飾器的原因?

回答

2

直接使用POCO對象實例本身? 無。

至少不是我會意識到的。 Jon Skeet應該能夠提供更多的信息,因爲他知道編譯器的內部工作原理,所以他知道編譯後的元數據究竟發生了什麼。訪問這些聲明屬性時,

間接相關的這些

其他影響當然也有含義的,因爲他們使用的是反射通常是一個緩慢的過程讀取。

但是這裏沒什麼可擔心的,因爲PetaPoco是一個智能庫,只讀取一次,然後編譯&緩存這些東西,所以你只會受到懲罰一次,然後你獲得熾熱的表現。因爲它使用編譯代碼。

不履行相關的影響

通過將屬性(任意)在你的類/屬性/方法你會莫名其妙地綁定你的代碼,具體的發動機將使用這個類,因爲他們是爲這個特殊的發動機指令瞭解你的代碼。

在PetaPoco屬性的情況下,這意味着您的類可以與PetaPoco一起使用,但不能與其他DAL(即EF)一起使用,除非您還添加了該屬性(EF Code First使用與屬性相同的方法)。

第二個含義與後臺數據庫有關。如果您將PetaPoco屬性中提供的表格,列或任何其他部分重命名爲常量magic字符串,則您隨後也必須更改此字符串。這只是意味着你在做數據庫更改時必須徹底......

+0

從它的聲音中發出甜甜的聲音,如果出現任何問題,它將成爲我樂於管理的邊緣案例。我想我會繼續使用它們。 – deanvmc 2012-04-12 08:33:22

+0

噢,還有一件事...閱讀其他信息。 – 2012-04-13 06:37:08

+1

歡呼的額外信息 – deanvmc 2012-04-13 08:50:52

2

一個缺點是它打破了「域」層和「數據」層之間的分離,因爲它引入了PetaPoco文件(它包含數據邏輯)轉換爲真正不具有任何知識或依賴於數據層的域類。

如果你正在做一個單項目的MVC應用程序或其他東西,那麼只需要使用Models目錄就可以了,但對於非平凡和分離的應用程序,你必須有兩個PetaPoco文件或者玩抽象文件的某些部分以註釋模型而不讓他們「知道太多」瞭解底層數據,或者讓您在整個地方指定表和/或主鍵名稱。

相關問題