我用的是Entity 4.1中的DBContxt.代码如下
var model = DBContxt.PurchasList.Where(r => r.purchaseType == 0);
            if (null != ConditionModel)
            {
                if (string.IsNullOrEmpty(ConditionModel.PurchaseOrderId))
                {
                    model = model.Where(r => r.purchaseOrderId == ConditionModel.PurchaseOrderId);
                }
                if (ConditionModel.OrderStatus!=-1)
                {
                    model = model.Where(r => r.orderStatus == ConditionModel.OrderStatus);
                }
            } return model.ToList();
因为我的Where是根据条件动态设置的。我想问下假如这张表性能怎么样?Entity Framework是根据我最后设置的条件生成的T_SQL还是我代码中每个Where以后都会去生成一个T_SQL去查询。上面代码是不是生成了
3个SQL语句。我的意思是问:var model = DBContxt.PurchasList.Where(r => r.purchaseType == 0);
 这里查询了一下数据库。然后  model = model.Where(r => r.purchaseOrderId == ConditionModel.PurchaseOrderId);
 又查询了下数据库。  性能与我下面的代码比较那个比较好呢:下面这里至少只查询一次数据库。 string sql =  " purchaseType == 0  ";
            if (null != ConditionModel)
            {
                if (string.IsNullOrEmpty(ConditionModel.PurchaseOrderId))
                {
                    sql =sql + " and  purchaseOrderId = '" + ConditionModel.PurchaseOrderId + "' ";
                }
                if (ConditionModel.OrderStatus != -1)
                {
                    sql = sql + " and  orderStatus = '" + ConditionModel.OrderStatus + "' ";
                   
                }
            }
            return DBContxt.PurchasList.SqlQuery(sql).ToList();

解决方案 »

  1.   

    一样。用 Entity  方便。快捷。它帮你生产的sql ,和你这个差不多,但是它不能注入,你这个可以注入。。
    你可以打开SQL server profiler 看里面它生成的SQL
      

  2.   

    Entity 生成的SQL很复杂的,性能没有直接的SQL好
      

  3.   

    问题是我的SQL 没有这个工具 SQL server profiler  找下载地址也找不到。麻烦
      

  4.   

    我也想看看我上面那个Entity 是不是最终生成一条T_SQL