0

我正在开发一个具有 SCQL CE 4.0 数据库的应用程序,并且我使用 EF 4.3.1 作为它的 ORM。有一个要求,我必须从 XML 文件中加载 100 条记录,对照数据库检查它们(通过它们的 GUID 列),如果它们是新的,则插入它们,但如果其中一些已经存在,我必须更新这些记录。

现在我想知道这个要求的最佳方法是什么?

现在我正在使用以下代码,但我认为它效率不高。

foreach( var record in xmlRecords )
{
    var existingRecord = context.Records.SingleOrDefault(r => r.Guid == record.Guid);
    if( existingRecord == null )
        context.Records.Add(record);
    else
        context.Records.ApplyCurrentValues(record);
 }

 context.SaveChanges();                
4

2 回答 2

0

现在我正在使用以下代码,但我认为它效率不高。

听起来你有什么作品。您是否进行过处理 100 条记录的测试运行?有什么理由要进一步优化吗?如果您的代码可以合理地处理 100 条记录(在这种情况下,我认为合理的是不到一两秒)并且这是您的要求,那么您就完成了。实体框架,我想所有其他 ORM 都可以轻松处理更新 100 行。如果您担心将来需要处理更多记录,请创建一个包含适当数量记录的大测试文件并查看它的执行情况。从那里优化。

如果它坏了不要修理它。在您的代码无法处理负载之前不要进行优化。您的用户将无法分辨 1.1 秒和 1.1222 秒之间的区别。

如果您确实必须优化某些东西,我会将您对运行速度缓慢的假设抛在脑后。这几乎不是你所期望的。在你的代码中加入一些计时器语句,看看是什么让你慢了下来。

希望有帮助。

于 2012-12-27T18:12:59.127 回答
0

这很好,其他是让存储过程以 XML 作为输入,然后使用 XML 编写插入和更新命令,但 SQL CE 不支持 XML 数据类型

于 2012-12-27T10:49:10.023 回答