谁能告诉我是否在调用它的行上CreateObjectSet
是否返回整个表,然后执行 Where 表达式(在内存中)还是生成的 SQL 中包含 where 表达式?
public virtual T GetById(int Id)
{
if (Id != 0)
{
PropertyInfo PrimaryKey = GetPrimaryKey();
var ItemParameter = Expression.Parameter(typeof(T), "item");
var WhereExpression = Expression.Lambda<Func<T, bool>>
(Expression.Equal(
Expression.Property(
ItemParameter,
PrimaryKey.Name
),
Expression.Constant(Id)
),
new[] { ItemParameter }
);
T Entity = GetObjectContext().CreateObjectSet<T>().Where(WhereExpression).SingleOrDefault<T>();
GetObjectContext().Refresh(RefreshMode.StoreWins, Entity);
return Entity;
}
else
{
return null;
}
}