LINQ to SQL

1.http://msdn2.microsoft.com/en-us/netframework/aa904594.aspx


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>()方法。

原文地址:https://www.cnblogs.com/zxhoo/p/1885778.html