【发布时间】:2016-05-13 07:43:10
【问题描述】:
我有一个函数,它使用 EF,但它运行得太慢了... 你知道有什么方法,如何提高这个功能的性能吗?
public static void SaveCombiners()
{
using (var db = new IP_dbEntities())
{
db.COMBINERs.RemoveRange(db.COMBINERs);
foreach (var type1 in EventTypesList)
{
foreach (var type2 in EventTypesList)
{
db.COMBINERs.Add(new COMBINER()
{
EVENTS_TYPE = db.EVENTS_TYPE.Single(type => type.event_type == type1),
EVENTS_TYPE1 = db.EVENTS_TYPE.Single(type => type.event_type == type2),
combine_status = _eventTypesCombinerCollection[type1][type2].Value == true ? "+" : "-"
});
}
}
db.SaveChanges();
}
}
【问题讨论】:
-
纯SQL写,使用
db.Database.ExecuteSqlQuery(sql, params).ToListAsync(); -
为什么要为 1 个列表写 2 个“Foreach”?
-
是的,+1,所以您可能会发现更好的是先进行一组读取,然后再进行写入...而不是每次写入时都读取!!!
-
寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小、完整和可验证的示例。
-
有很多可能的方法可以使您的代码更快,但是当您提供零相关信息时,这是在黑暗中拍摄。也许它很慢,因为您不知道如何正确定义数据库中的索引?为什么你叫 Single 而不是 First...
标签: c# wpf performance entity-framework