2.4 LINQ基础操作 上

  • 评论:0
  • 浏览:469
  • RSS:2
文章类型:原创

2.4.1、创建、删除数据库

LINQ不仅能从现有数据库中生成数据库对象模型(即DBML文件),而且能从现有的单个数据库对象模型中反向生成数据库(注:仅仅是单个数据库对象模型,即单个DBML文件),并能删除数据库。但遗憾的是LINQ并不能只生成数据库中的单个表。

LINQ提供了DatabaseExists(数据库是否存在),CreateDatabase(建立数据库),DeleteDatabase(删除数据库)三个函数来实现相应的操作。

例:

          protected void Page_Load(object sender, EventArgs e)

         {

        UsersDataContext dal = new UsersDataContext();//添加对数据库对象模型的引用

        if (dal.DatabaseExists())//如果数据库存在

            dal.DeleteDatabase();//删除数据库

        if (!dal.DatabaseExists())//如果数据库不存在

            dal.CreateDatabase();//创建数据库

}

此时,LINQ会根据Users的数据库对象模型生成数据库,仅仅包括Users数据库对象模型中包含的表格(仅包括Users数据库对象模型中的表),若我们包含多个数据库对象模型,则可合并为一个,并采用此函数来生成。

2.4.2、添加数据

经过前边的学习,我们知道LINQ提供了InsertOnSubmitInsertAllOnSubmit两个函数来实现对数据的添加,并在SubmitChanges的时候完成对数据的删除。我们再来温习一便:

a. InsertOnSubmit: 将一个实体添加到datacontext对象中,并在SubmitChange()的时候执行更改。

b. InsertAllOnSubmit:将一个实体集合添加到datacontext对象中,并在SubmitChange()的时候执行更改。

例:

        UsersDataContext dal = new UsersDataContext();

        User[] user = new User[3]

        {

            new User { UserName = "Lily", UserPass = "Lily" },

            new User { UserName = "Lucy", UserPass = "Lucy" },

            new User { UserName = "Tom", UserPass = "Tom" },

        };

        User user1 = new User { UserName = "Bill", UserPass = "Bill" };

 

        dal.Users.InsertAllOnSubmit(user);//添加实体集合

        dal.Users.InsertOnSubmit(user1);//添加单个实体

   dal.SubmitChanges();

以上结果为向数据库Users表中增加数据。

2.4.3、删除数据

同样,LINQ提供了DeleteOnSubmitDeleteAllOnSubmit两个函数实现对数据的删除,并在SubmitChanges的时候完成对数据的删除。

a. DeleteOnSubmit: 将一个实体从datacontext对象中删除,并在SubmitChange()的时候执行更改。

b. DeleteAllOnSubmit:将一个实体集合从datacontext对象中删除,并在SubmitChange()的时候执行更改。

例:

    protected void btnDelete_Click(object sender, EventArgs e)

    {

        UsersDataContext dal = new UsersDataContext();

        User user = dal.Users.FirstOrDefault(s => s.UserName == "Tom");

        if (user != null)

        {

            dal.Users.DeleteOnSubmit(user);//删除单条数据

        }

        var q = dal.Users;

        dal.Users.DeleteAllOnSubmit(q);//删除数据集

        dal.SubmitChanges();

    }

※注:以上两个函数必须要跟随SubmitChange()函数才能从数据库中删除数据。我们可以通俗的理解为:以上两个函数仅仅相当于一条Sql语句,而SubmitChange()相当于执行此条Sql语句。