2012-04-11 89 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文件或者玩抽象文件的某些部分以注释模型而不让他们“知道太多”了解底层数据,或者让您在整个地方指定表和/或主键名称。

相关问题