gpt4 book ai didi

.net - PetaPoco 插入物 - 最快的方法?

转载 作者:太空狗 更新时间:2023-10-30 01:48:24 25 4
gpt4 key购买 nike

将记录插入数据库的最快选项是什么:使用以下哪个选项:

  • Database.Insert(poco)
  • Database.Insert(tableName, pkName, poco)
  • 数据库.Save(poco)
  • Database.Save(tableName, pkName, poco)

出于性能原因,我应该使用哪一个?一个对我来说并不比另一个差...

谢谢。

最佳答案

Which one should I use for performance reasons?

Database.Save 方法使用GetValue 检索主键字段的值,然后调用Database.InsertDatabase .相应地更新

因此,只有当您的代码确实需要保存对可能是新的或已存在的对象的更改时,才应使用 Database.Save。另请注意,您的表必须具有自动递增的主键列,Database.Save 才能正常工作。

即使没有轻微的性能差异,我也更喜欢正确的语义 - 使用 Insert 或 Update 而不是 Save。

One is not less convenient to me than the other...

事实并非如此。

Database.Insert(poco) 将在 poco 类定义的自定义属性中查找 tableNamepkName 的值。如果您使用 T4 模板,这些值将自动与您的数据库保持同步,并且它们只会在一个位置指定。另一方面,如果您在每个方法调用中传递它们,它们将在您的代码库中重复无数次。干燥。如果稍后需要更改其中一个值怎么办?

现在,由于该查找,Database.Insert(poco) 的性能会略有下降。然而,PetaPoco 将查找的结果缓存在静态字典中,因此在第一次查找后性能影响将非常小:

RWLock.EnterReadLock();
PocoData pd;
try
{
if (m_PocoDatas.TryGetValue(t, out pd))
return pd;
}
finally
{
RWLock.ExitReadLock();
}

关于.net - PetaPoco 插入物 - 最快的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8689982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com