加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

.net – PetaPoco Insert – 最快的方法?

发布时间:2020-12-12 07:49:13 所属栏目:MsSql教程 来源:网络整理
导读:将记录插入数据库的最快选项是什么:使用以下哪些方法: Database.Insert(poco) Database.Insert(tableName,pkName,poco) Database.Save(poco) Database.Save(tableName,poco) 出于性能原因,我应该使用哪一个?一个对我来说并不比另一个方便…… 谢谢. 解决方
将记录插入数据库的最快选项是什么:使用以下哪些方法:

> Database.Insert(poco)
> Database.Insert(tableName,pkName,poco)
> Database.Save(poco)
> Database.Save(tableName,poco)

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

谢谢.

解决方法

Which one should I use for performance reasons?

Database.Save方法使用GetValue检索主键字段的值,然后相应地调用Database.Insert或Database.Update.

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

即使没有轻微的性能差异,我也更喜欢正确的语义 – 使用Insert或Update over Save.

One is not less convenient to me than the other…

那不是真的.

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

现在,由于查找,Database.Insert(poco)的性能会稍差.但是,PetaPoco将查找结果缓存在静态字典中,因此在第一次查找后性能影响非常小:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读