zoukankan      html  css  js  c++  java
  • LINQ to SQL 基础

    取得数据库Gateway

    要操作数据库,我们首先要获得一个DataContext对象,这个对象相当于一个数据 库的Gateway,所有的操作都是通过它进行的。这个对象的名字是“Linq to SQL Classes文件 名+‘DataContext’”,这里,就是DataClassesDataContext了。它和普通对象一样,直接实 例化就行了。在Demo里我将它实例化为一个静态变量。

    取得DataContext对象后,每个数据表就会映射到其一个集合属性,例如Category表映射到 dataContext.Categories,这是一个集合属性,每一个元素是一个实体类,代表此表中的一条 记录。实体类名和表名相同。实体类的字段自然就映射到对应表的字段。

    还有一点需要注意,数据库中的一对多关系,在Linq to SQL生成代码时会自动表示到类结 构中。并且,这种关联是双向的。例如,Category与Bulletin的一对多关系,到了类结构中, 反映成如下形式:在Category类中,有一个名为Bulletins的集合属性,内容是所有属于此 Category的Bulletin对象的引用。而在Bulletin类中,也会有个Category1属性(由于Category 这个名字被我们用了,所以,这个关联属性自动加了个“1”),其内容是此Bulletin所属 Category对象的引用。

    Insert操作

    Insert用于向数据库添加记录。一般情况下,使用“DataContext.表映射集 合.InsertOnSubmit(实体类)”的方式就可以完成Insert操作。不过这里要注意一点,由于Linq to SQL使用了“Unit of Work”模式,所以,对数据库的操作不会立即提交到数据库,而要调 用DataContext的SubmitChanges方法,所有改动才会被提交到数据库。

    Delete操作

    Delete操作用于从数据库中删除记录。表映射集合的DeleteOnSubmit方法可以实 现这个操作。这个方法需要一个参数,就是要删除的实体类,这里不能直接传个ID去删除,要 首先通过ID找到相应实体类,传给DeleteOnSubmit再删除。当然最后不要忘了SubmitChanges。

    Update操作

    Update操作用于更新数据库中某已存在记录的信息。在Linq to SQL中,Update操 作就是首先加载相应的实体类,修改其相应字段后,SubmitChanges就可以了。

    Select操作

    Select操作用于从数据库中返回指定的记录。在Linq to SQL中,查询结果都是以实体类或 实体类集合的方式返回的。其中实体类集合并不是List,如果想转为List,只需在返回结果上 调用ToList方法即可。

    如果是查询单一记录,建议使用表映射集合的Single方法。至于查询参数,建议采用lambda 表达式。如果你对lambda表达式不熟,可以参考这里http://msdn.microsoft.com/zh- cn/library/bb397687.aspx

    其它相关示例代码

    常用Select操作举例

    取得单个记录(ID为3的分类)

    RETURNDATACONTEXT.CATEGORIES.SINGLE(C=>C.ID==3;

    取得全部记录(全部分类)

    RETURNDATACONTEXT.CATEGORIES;

    得部分记录(所属分类ID为3的公告,按ID降序排列)

    RETURNFROMB<indatacontext.bulletins

    <whereb.category==3 <p="">orderbyb.IDdescending

    selectb;

    取得部分记录并分页,最后转换为List(所属分类ID为3的公告并分页,pageSize为每页多 少条记录,pageNo为第几页)

    varbulletins=frombINDATACONTEXT.BULLETINS

    <whereb.category==3 <p="">orderbyb.IDdescending

    selectb;

    <returnbulletins.skip(pagesize*(pagenumber-1)).take(pagesize).tolist();< pre="">

    参考资料: http://developer.51cto.com/art/200904/120915_1.htm

  • 相关阅读:
    二维数组和二维指针作为函数的参数
    我所理解的tensorflow
    新篇:A New Start
    3NF(Canonical Cover and Decomposition)
    SQL: group by + having
    hihoCoder挑战赛14
    KMP算法
    二分查找
    Cellular Network
    拓撲排序
  • 原文地址:https://www.cnblogs.com/Jokers/p/3568845.html
Copyright © 2011-2022 走看看