我用的是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();
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();
你可以打开SQL server profiler 看里面它生成的SQL