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

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

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

    谢谢。

    最佳答案


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

    因此,仅在您的代码确实确实需要保存对新对象或预先存在的对象的更改时,才应使用Database.Save。另外,请注意,表必须在上具有自动递增的主键列,以使Database.Save起作用。

    即使没有轻微的性能差异,我还是希望使用正确的语义-使用插入或更新而不是保存。



    那不是真的。
    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/

    10-11 23:05
    查看更多