AddObject()方法非常慢



我遇到了一个奇怪的问题,当我尝试使用ObjectSet(TEntity).AddObject()添加新实体时,与正常行为相比速度非常慢,大约需要500毫秒,而且这种情况只发生一次,我确信需要一些时间的指令是AddObject,而不是SaveChanges。

代码非常简单

    ObjectEntity obj = businessObj.ExtractEntityObj();
    context.ObjectTable.AddObject(ObjectEntity);

我之前对ObjectContext做了一些工作来调用这部分代码,但它并不比我在所有其他操作中做的多,这似乎取决于数据库中存储了多少具有相同外键的项,我知道这听起来可能很奇怪,但它是唯一一个改变同一指令性能的变量。我还注意到,如果我在新的DataContext上尝试这样做,性能会恢复正常(几毫秒),但由于架构问题,我不能每次都有新的DataContext。

有人能帮我吗?感谢

我解决了我的问题,也许对某人有帮助,这是由于我在该指令之前进行的一个简单查询,这个:

int id = context.ObjectTable.Where(t=>t.Something = somethingElse).FirstOrDefault().ID

我仍然不知道为什么,但这条指令将所有"ObjectTable"数据都附加到上下文中,使其速度非常慢,"ObjectTable"也是我添加新实体的同一个表。将ObjectQuery MergeOption设置为NoTracking我已经解决了问题

再见

修改您的查询

int id = context.ObjectTable.Where(t=>t.Something = somethingElse).FirstOrDefault().ID

int id = context.ObjectTable.FirstOrDefault(t=>t.Something = somethingElse).ID

它不应该有任何显著的性能改进,但为什么要先使用Where(),然后使用FirsOrDefault()

相关内容

最新更新