简易留言簿
现在,我们就可以使用Linq to sql完成简易留言簿了。实现以下功能:
发表留言(增) 查看留言(查)
管理员回复留言(改) 管理员删除留言(删除)
首先,创建一个Default.aspx,在页面上加入一些控件:
? ? ? ?
> 姓名
留言
<%# Eval(\
<%# Eval(\
管理员回复:<%# Eval(\暂无\
div>
你可能很难想象,使用Linq to sql进行数据访问会是这么简单,后台代码: c partial class _Default : System.Web.UI.Page
estBookDataContext ctx = new GuestBookDataContext(\
otected void Page_Load(object sender, EventArgs e)
f (!IsPostBack) {
SetBind(); }
otected void btn_SendMessage_Click(object sender, EventArgs e)
bGuestBook gb = new tbGuestBook(); D = Guid.NewGuid();
gb.UserName = tb_UserName.Text; gb.Message = tb_Message.Text; gb.IsReplied = false;
gb.PostTime = DateTime.Now; ctx.tbGuestBooks.Add(gb); ctx.SubmitChanges(); SetBind();
vate void SetBind()
rpt_Message.DataSource = from gb in ctx.tbGuestBooks orderby gb.PostTime descending select gb; rpt_Message.DataBind();
前面创建Linq to sql Classes的时候我们输入名字GuestBook,系统就为我们自动创建了GuestBookDataContext(你也可以在GuestBook.Designer.cs中找到类定义)。在绑定的时候我们使用查询句法查询留言表中所有留言,按照发表时间倒序(天哪?这是数据访问吗?好像仅仅定义了一句SQL啊)。在发表留言按钮中,我们为一个tbGuestBook赋值,然后把它加入留言表,再提交更改,就这样完成了记录的插入。 运行效果如下图:
然后,再创建一个Admin.aspx,前台代码如下:
<%# Eval(\
后台代码:
public partial class Admin : System.Web.UI.Page {
GuestBookDataContext ctx = new GuestBookDataContext(\
protected void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
SetBind(); } }
private void SetBind() {
rpt_Message.DataSource = from gb in ctx.tbGuestBooks orderby gb.PostTime descending select gb; rpt_Message.DataBind(); }
protected void rpt_Message_ItemCommand(object source, RepeaterCommandEventArgs e) {
if (e.CommandName == \ {
StreamWriter sw = new StreamWriter(Server.MapPath(\ ctx.Log = sw;
tbGuestBook gb = ctx.tbGuestBooks.Single(b => b.ID == new Guid(e.CommandArgument.ToString())); ctx.tbGuestBooks.Remove(gb); ctx.SubmitChanges(); SetBind(); sw.Close(); }
if (e.CommandName == \ {
StreamWriter sw = new StreamWriter(Server.MapPath(\ ctx.Log = sw;
tbGuestBook gb = ctx.tbGuestBooks.Single(b => b.ID == new Guid(e.CommandArgument.ToString())); gb.Reply = ((TextBox)e.Item.FindControl(\ gb.IsReplied = true; ctx.SubmitChanges(); SetBind(); sw.Close(); } } }
运行效果如下图:
在这里,我们通过Single方法获取一条记录,也就是一个tbGuestBook实例,更新了一些属性后保存也就完成了改这个操作。删除操作更简单,只需要从表中移除对象。你是不是觉得好像不是在操作数据库,像在操作内存中的对象。 由于写了日志,看看改和删操作会是怎么样的SQL?