一步一步学Linq to sql(三):增删查改

简介: 前言   今天主要是来学习一下,通过Linq如何进行数据库的操作,增加、删除、修改。准备工作,先是建立了一个Asp.Net Mvc 3.0的Web项目, 然后建立一个数据库,表 USE [YQBlog] GO CREATE TABLE [dbo].

前言

  今天主要是来学习一下,通过Linq如何进行数据库的操作,增加、删除、修改。准备工作,先是建立了一个Asp.Net Mvc 3.0的Web项目,

然后建立一个数据库,表

USE [YQBlog]
GO
CREATE TABLE [dbo].[tbGuestBook](
	[ID] [uniqueidentifier] NOT NULL primary key,
	[UserName] [varchar](50) NOT NULL,
	[PostTime] [datetime] NOT NULL,
	[Message] [varchar](400) NULL,
	[IsRequired] [bit] NOT NULL,
	[Reply] [varchar](400) NULL
)

生成实体类

       右键点击网站项目,选择添加新项,然后选择“Linq to sql Classes”,命名为GuestBook。然后打开App_Code里面的GuestBook.dbml。设计视图上的文字提示你可以从服务器资源管理器或者攻击箱拖动项到设计界面上来创建实体类。

那么,我们就在服务器资源管理器中创建一个指向GuestBook数据库的数据连接,然后把tbGuestBook表拖动到GuestBook.dbml的设计视图上,按CTRL+S保存。打开GuestBook.designer.cs可以发现系统自动创建了GuestBook数据库中tbGuestBook表的映射。记得主键的设置哦。

首页加载列表

 首先为了简单,在HomeController中建立一个全局变量

GuestBookDataContext ctx = new GuestBookDataContext(ConfigurationManager.ConnectionStrings["YQBlogConnectionString"].ConnectionString);

那么关于加载列表的后台代码如下

        public ActionResult Index()
        {
            ViewBag.Message = "欢迎使用 ASP.NET MVC!";
            List<tbGuestBook> list = (from gb in ctx.tbGuestBook
                                     orderby gb.PostTime descending 
                                     select gb).ToList();
            return View("Index",list);
        }

再来看一下列表视图代码

@{
    ViewBag.Title = "主页";
}
@using MvcOperation;
@model List<tbGuestBook>
<h2>@ViewBag.Message</h2>
<p>
    若要了解有关 ASP.NET MVC 的更多信息,请访问 <a href="http://asp.net/mvc" title="ASP.NET MVC 网站">http://asp.net/mvc</a>。
</p>
<div>
    <p>@Html.ActionLink("添加", "AddBook", "Home")</p>
</div>
<div>
    <table>
        <tr>
            <th>姓名</th>
            <th>消息</th>
            <th>发表时间</th>
            <th>是否需要回复</th>
            <th>操作</th>
        </tr>
    @{
        foreach(tbGuestBook Book in Model)
        {
            <tr>
                <td>@Book.UserName</td>
                <td>@Book.Message</td>
                <td>@Book.PostTime</td>
                    @if(Book.IsRequired==true)
                    {
                        <td>是</td>
                    }
                    else
                    {
                        <td>否</td>
                    }
                    <td>@Html.ActionLink("删除", "DelBook", "Home", new { id=Book.ID},null) @Html.ActionLink("修改", "UpdateBook", "Home", new { id=Book.ID},null)</td>
            </tr>
        }
        }
        </table>
</div>

  

看列表就这样展示出来了哦。

添加

 看上面截图中有一个操作一栏,删除和修改。

        public ActionResult SaveBook(tbGuestBook tb)
        {
                tb.ID = Guid.NewGuid();
                tb.IsRequired = false;
                tb.PostTime = DateTime.Now;
                ctx.tbGuestBook.InsertOnSubmit(tb);
                ctx.SubmitChanges();
                return Index();
        }

  添加保存时的代码,简单赋值,通过Linq专有方法即可提交到数据库中哦。

再来看一下添加的视图的代码

<h2>AddBook</h2>
<div>
@using(Html.BeginForm("SaveBook","Home",FormMethod.Post))
  {
    <table>
        <tr>
            <td>@Html.Label("姓名")</td>
            <td>@Html.TextBoxFor(c=>c.UserName,new { @style = "width:300px;"})</td>
        </tr>
        <tr>
            <td>@Html.Label("留言")</td>
            <td>@Html.TextAreaFor(c=>c.Message, new { @style = "width:300px;height:50px;" })</td>
        </tr>
        <tr>
            <td>@Html.Label("是否需要回复")</td>
            <td>是 @Html.RadioButtonFor(c=>c.IsRequired, 1, true)  否 @Html.RadioButtonFor(c => c.IsRequired, 0, false)</td>
        </tr>
        <tr>
            <td>
                <input type="submit"  value="添加" />
            </td>
            <td>
                <input type="button" value="返回" />
            </td>
        </tr>
    </table>
    @Html.HiddenFor(c=>c.ID)
    }
    </div>

  当然这顺便也是修改的视图代码了哦

修改

        public ActionResult UpdateBook(string id)
        {
            tbGuestBook gb = ctx.tbGuestBook.Single(b => b.ID == new Guid(id));
            return View("AddBook",gb);
        }

点击列表修改时,通过传递的ID进行查找,然后展示到AddBook视图中进行绑定数据,就可以修改了。

        public ActionResult SaveBook(tbGuestBook tb)
        {
            tbGuestBook gb = null;
            if (tb.ID.ToString() != "00000000-0000-0000-0000-000000000000")
            {
                gb = ctx.tbGuestBook.Single(b => b.ID == new Guid(tb.ID.ToString()));
                gb.PostTime = DateTime.Now;
                gb.UserName = tb.UserName;
                gb.Message = tb.Message;
                ctx.SubmitChanges();
                return Index();
            }
            else
            {
                tb.ID = Guid.NewGuid();
                tb.IsRequired = false;
                tb.PostTime = DateTime.Now;
                ctx.tbGuestBook.InsertOnSubmit(tb);
                ctx.SubmitChanges();
            }
                return Index();
        }

这就是添加和修改的保存代码

删除

        public ActionResult DelBook(string id)
        {
            tbGuestBook gb = ctx.tbGuestBook.Single(b => b.ID == new Guid(id));
            ctx.tbGuestBook.DeleteOnSubmit(gb);
            ctx.SubmitChanges();
            return Index();
        }

总结

简单的实例代码,就是这样的,自己感觉表面的还是很简单的。

示例代码下载地址 http://files.cnblogs.com/aehyok/LinqOperation.rar

目录
相关文章
|
3月前
|
SQL 开发框架 .NET
C# Linq SaveChanges()报错 You have an error in your SQL syntex
C# Linq SaveChanges()报错 You have an error in your SQL syntex
11 0
|
8月前
|
SQL 开发框架 .NET
SQL中in和not in在LINQ中的写法
SQL中in和not in在LINQ中的写法
|
9月前
|
SQL 开发框架 .NET
ef linq方式插入+sql操作数据注意事项
ef linq方式插入+sql操作数据注意事项
68 0
|
SQL 数据库
数据库增删查改联表操作的sql语句
数据库增删查改联表操作的sql语句
99 0
|
SQL 关系型数据库 MySQL
MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)
MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)
201 0
MySQL表sql语句增删查改_学会这些操作你就不会栓Q(狗头)
|
SQL 存储 开发框架
Linq To SQl总结
Linq To SQl总结
151 0
Linq To SQl总结
|
SQL 开发框架 安全
Linq to SQL中的ColumnAttribute中的Expression
在Linq to SQL中,使用ColumnAttribute特性来关联数据库和实体类。这个Atrribute也有很多属性可以设置。其中让人比较迷糊的是Expression,也折磨了我好几天才弄明白(因为官方的例子给的也让人迷糊,基本运行都无法通过)。
490 0
Linq to SQL中的ColumnAttribute中的Expression
|
SQL .NET 开发框架
Linq SQL 动态个数where查询
Linq SQL 动态个数where查询,从parts表中查找工件类型ID为1、2或6...(个数不定)的所有part。
8410 0
|
SQL
SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码)
原文:SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) SQL Server 表的管理_关于表的操作增删查改的操作的详解(案例代码) 概述: 表由行和列组成,每个表都必须有个表名。
1247 0
|
SQL 数据库 索引
SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)
原文:SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码) SQL Server 表的管理_关于数据增删查改的操作的详解(案例代码)-DML 1、SQL INSERT INTO 语句(在表中插入) INSERT INTO 语句用于向表中插入新记录。
1059 0