LINQ to SQL
时间:2010-11-23 来源:steve.z
2.在使用LINQ to SQL前请添加System.Data.Linq.dll引用。
3.在自定义数据实体类时,指定TableAttribute特性和ColumnAttribute特性需要导入System.Data.Linq.Mapping命名空间。当数据实体类中属性名称和数据库字段名称一致时,可以不指定字段名([Column(Name="字段名")]).
4.DataContext类,通过LINQ表达式从数据库中获取信息的桥梁类。
DataContext类使用示例:
DataContext dc = new DataContext(connectionString);
Table<Category> table = dc.GetTable<Category>();//返回类型也可是IQueryable<TEntity>(Table<TEntity>实现了IQueryable<TEntity>接口)
gvlist.DataSource = table;
gvlist.DataBind();
5.LINQ to SQL不是将数据全部取出后在内存中通过LINQ表达式过滤,而是直接把LINQ表达式转换成相应的SQL语句。
6.LINQ to SQL无法将LINQ表达式中带有自定义方法的where表达式转换成相应的SQL,所以如果在where表达式中有自定义方法,需将IQueryable<T>转换成IEnumerable<T>,然后再写where表达式。
示例:
DataContext dc = new DataContext(connectionString);
Table<Category> table = dc.GetTable<Category>();
IEnumerable<Category> matches = from c in table.AsEnumerable<Category>()
where getCategory(c.CategoryID)
select c;
gvlist.DataSource = matches;
gvlist.DataBind();
===============getCategory===============
private bool getCategory(int id)
{
bool b = false;
if (id > 1)
{
b = true;
}
return b;
}
7.为了避免延迟执行,可在数据层直接调用ToList<T>()或ToArray<T>()方法。