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

前言

  今天主要是来学习一下,通过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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

Sqlite快速上手使用指南

这是网上收集的几篇教程 1. Sqlite简明教程 http://www.sqlite.com.cn/MySqlite/4/32.Html 2. Sqlite入...

2339
来自专栏程序员的SOD蜜

常见.NET功能代码汇总

1,在Web上修改指定文件位置的Web.config 这里需要使用 WebConfigurationManager 类,但必须使用WebConfiguratio...

4289
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(5)-EF增删改查

前言 为了符合后面更新后的重构系统,文章于2016-11-1日重写 回顾上一节的解决方案,我们看出了解决方案中类库的关系 这里要说明一点MVC!=三层 ...

2486
来自专栏跟着阿笨一起玩NET

DataTable的AcceptChange方法为什么不能在Update之前?

本人转载http://www.cnblogs.com/telnet_mike/archive/2011/08/29/2159013.html

1391
来自专栏程序员的SOD蜜

使用Topshelf创建自宿主的Windows服务程序

在传统的Windows服务开发过程中,需要添加一个服务安装程序,里面写安装,启动和停止服务等逻辑。现在,使用TopSelf可以简化这个过程。具体请看官网说明: ...

2395
来自专栏林德熙的博客

win10 uwp 网络编程 带Header的WebRequest获取BufferHttpClient 使用 Cookie

上面传输的头,Head=Head+length 中的第二个Head,包含 传输者id,当前传输是传输的消息最后一段还是中间,当前传输 是服务器第消息

1001
来自专栏Java帮帮-微信公众号-技术文章全总结

Hibernate_day02总结

Hibernate_day02总结 今日内容 l Hibernate持久化对象的状态 l Hibernate的一级缓存 l Hibernate操作持久化对象的方...

36011
来自专栏木宛城主

SharePoint 创建 Lookup 类型的Site Column解决跨站问题

在某些情况下,我们需要去引用其他List中的数据,比如在网站集(Site Collection)上有个List叫Country,在其子网站(WebSite)有...

2379
来自专栏.NET开发者社区

一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](四)

上一篇《一步一步创建ASP.NET MVC5程序[Repository+Autofac+Automapper+SqlSugar](三)》,我们完成了:

2139
来自专栏Golang语言社区

[Go 语言社区] Golang架构底层---日志函数

服务器后台架构,日志是必不可少的一个功能模块,日志可以分为很多中:统计日志,访问日志,错误日志等 今天大家发是运行中的日志函数 // 日志函数,传入数据为字...

3326

扫码关注云+社区

领取腾讯云代金券