petapoco - 向 POCO 添加 PetaPoco 属性是否有任何负面影响?

标签 petapoco

我们当前的应用程序使用智能对象样式来处理数据库。我们正在研究转向 PetaPoco 的可行性。查看这些功能,我发现您可以添加属性来更轻松地对对象进行 CRUD。添加这些属性是否会产生我应该注意的负面影响?

有人找到不使用这些装饰器的理由吗?

最佳答案

直接使用POCO对象实例本身? 无。

至少我不会意识到。 Jon Skeet 应该能够提供更多信息,因为他彻底了解编译器的内部工作原理,因此他确切地知道这些元数据在编译后会发生什么。

与这些间接相关的其他影响

访问这些声明性属性时当然会产生影响,因为它们是使用反射来读取的,这通常是一个缓慢的过程。

但是这里没有什么可担心的,因为 PetaPoco 是一个智能库,只读取这些内容一次,然后编译和缓存这些内容,所以你只会受到一次惩罚,然后你就会获得惊人的性能。因为它使用编译代码。

非性能相关影响

通过在类/属性/方法上放置属性(任何),您可以以某种方式将代码绑定(bind)到将使用此类的特定引擎,因为它们是该特定引擎理解您的代码的指令。

如果是 PetaPoco 属性,这意味着您的类可以与 PetaPoco 一起使用,但不能与其他一些 DAL(即 EF)一起使用,除非您也添加该类的属性(EF Code First 使用与属性完全相同的方法) .

第二个含义与后端数据库有关。如果您将 PetaPoco 属性中提供的表、列或任何其他部分重命名为常量 magic 字符串,您随后也必须更改该字符串。这只是意味着您在进行数据库更改时必须彻底......

关于petapoco - 向 POCO 添加 PetaPoco 属性是否有任何负面影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10108171/

相关文章:

c# - 如何创建一个名称与表名不同的 petapoco 类?

c# - 多个数据库上的 PetaPoco

.Net PetaPoco 默认查询参数

table-valued-parameters - 我可以使用 PetaPoco 将表值参数传递给存储过程吗?

c# - PetaPOCO 和超过 4 个加入

stored-procedures - 使用 PetaPoco 执行存储过程

c# - Peta Poco where 子句

c#-4.0 - 使用 PetaPoco 将表值参数传递给存储过程

petapoco - 如何使用 PetaPoco 显式包含映射表

c# - PetaPoco 核心 .cs 文件在 ASP.NET 5 类库包中不可见