> 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(); }
原文地址:https://www.jb51.cc/mssql/76403.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。