sql nhibernate 循环性能

sql nhibernate performance for loop

我有以下逻辑:

遍历 ID 列表,获取关联的实体,对于该实体,循环遍历另一个 ID 列表并获取另一个实体。代码如下:

foreach (var docId in docIds)
{
      var doc = new EntityManager<Document>().GetById(docId);
      foreach (var tradeId in tradeIds)
      {
          var trade = new EntityManager<Trade>().GetById(tradeId);
          if (doc.Trade.TradeId != trade.TradeId)
          {
              Document newDoc = new Document(doc, trade, 0);
              new EntityManager<Document>().Add(newDoc);
          }
      }
}

我的问题主要是关于 sql 性能。显然会有一堆 selects 发生,还有一些 adds。这是做这样的事情的坏方法吗?

我是否应该使用 session 并获取与 ID 列表匹配的所有实体的列表(使用 1 select 语句)然后循环?

这仅取决于我的经验。但是你可以自己测试一下。 如果 Trade 实体不是很大并且实体数量不会超过 1000 - 读取所有实体并在之后循环将更可取。 如果计数大于 1k - 最好调用包含你的 ID 的临时 table 的存储过程。