linq中文教程(二十二)

然后使用下面的代码测试:

  


var 多结果集存储过程 = ctx.sp_multiresultset();
  var Customers = 多结果集存储过程.GetResult();
  var Employees = 多结果集存储过程.GetResult();

GridView1.DataSource = from emp in Employees where emp.FirstName.Contains("A") select emp;

 GridView1.DataBind();

  GridView2.DataSource = from c in Customers where c.CustomerID.StartsWith("A") select c;

  GridView2.DataBind();

  

   使用存储过程新增数据

  存储过程除了可以直接调用之外,还可以用于实体的增删改操作。还记得在《一步一步学Linq to sql():增删改》中创建的留言簿程序吗?下面我们就来改造这个程序,使用存储过程而不是系统生成的SQL实现实体增删改。首先,我们创建下面的存储过程

  


create proc sendmessage
  @username varchar(50),
  @message varchar(500)
  as
  insert into tbguestbook
  (id,username,posttime,[message],isreplied,reply)
  values
  (newid(),@username,getdate(),@message,0,'')

  然后,打开留言簿dbml,把存储过程从服务器资源管理器拖拽到设计视图上。右键点击tbGuestBook实体类,选择配置行为。如下图,为插入操作选择刚才创建的存储过程方法,并进行参数匹配:

  

  由于我们的存储过程只接受2个参数,相应修改以下创建留言的按钮处理事件:

  


protected void btn_SendMessage_Click(object sender, EventArgs e)
  {
  tbGuestBook gb = new tbGuestBook();
  gb.UserName = tb_UserName.Text;
  gb.Message = tb_Message.Text;
  ctx.tbGuestBooks.Add(gb);
  ctx.SubmitChanges();
  SetBind();
  }

  运行程序后可以发现,在提交修改的时候调用了下面的SQL

 


 EXEC @RETURN_VALUE = [dbo].[sendmessage] @username = @p0, @message = @p1
  -- @p0: Input AnsiString (Size = 5; Prec = 0; Scale = 0) [zhuye]
  -- @p1: Input AnsiString (Size = 11; Prec = 0; Scale = 0) [new message]
  -- @RETURN_VALUE: Output Int32 (Size = 0; Prec = 0; Scale = 0) []

  使用存储过程删除数据

  创建如下存储过程:

 


 create proc delmessage
  @id uniqueidentifier
  as
  delete tbguestbook where id=@id

  按照前面的步骤生成存储过程方法,并为删除操作执行这个存储过程方法。在选择参数的时候我们可以看到,ID分当前值和原始值,我们选择当前值即可,如下图:

  

  无须改动任何逻辑代码,进行删除留言操作后可以跟踪到下面的SQL

 


 EXEC @RETURN_VALUE = [dbo].[delmessage] @id = @p0
  -- @p0: Input Guid (Size = 0; Prec = 0; Scale = 0) [9e3c5ee3-2575-458e-899d-4b0bf73e0849]
  -- @RETURN_VALUE: Output Int32 (Size = 0; Prec = 0; Scale = 0) []

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值