linq to sql中使用LInq to sql class设计向导

vs2008提供非常好的设计工具来进行数据库和实体类的映射。使用这个工具。可以可视化的生成实体类不用写代码。而且生成了很多相应的方法

打开vs2008后。建立web或window项目都可以。添加新项选择 linq to sql classes这个选项就OK了

在这之前你的vs2008应该先打开服务器对象窗口用来建立数据库链接。如果没有的话选择--视图--服务器窗口(server explorer)。可以建立数据库链接。具体过程就不说了。我选择的sqlserver2000中的northwind数据库

这时候再看linq to sql classes的设计器。有左右两个区域。左边那个区域是用来拖放表的。右边是用来拖放存储过程或用户的function的。

选择region表拖到表区域。就建立了一个Region的实体类了。在设计器文件的.design.cs中可以看到。而且还生成一个数据库上下文类。可以用这个类来直接进行数据各个操作

[System.Data.Linq.Mapping.DatabaseAttribute(Name="Northwind")]
public partial class DataClassesDataContext : System.Data.Linq.DataContext 就是这个东西

还有Region的实体类。大家自己看了。

建立一个存储过程。prcSelectRegion 就是select * from region 了大家自己写了

然后选择一个存储过程拖放到右侧的方法区域。这样你的linq就可以使用这个存储过程。生成的代码还是.design.cs中。所以你要保存几次。才能看到代码。

这个存储过程返回的是region的所以内容。在linq操作中所有的东西都是对象。所以这个存储过程的返回值也是一个对象。就是和region关系一样的东西。所以代码还生成了一个实体类和region一样的实体类

public partial class prcSelectRegionResult
{
 
 private int _RegionID;
 
 private string _RegionDescription;

。。。

}

生成的访问存储过程这个方法是这个:

[Function(Name="dbo.prcSelectRegion")]
 public ISingleResult<prcSelectRegionResult> prcSelectRegion()
 {
  IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())),);
  
  return ((ISingleResult<prcSelectRegionResult>)(result.ReturnValue));
 }//的

其中泛型类型就prcSelectRegionResult

linq也可以访问带输入参数和输出参数的存储过程。

把上面的存储过程修改一下阿

create  proc prcSelectRegion
@ID int,
@desc varchar(50) output
as
select * from Region where RegionID = @ID
select @desc = 'hello world'

然后在设计器中。把原来的那个方法拖删掉把服务器刷新一下阿。把新的存储过程拖放上去。注意保存几次,新的代码
才出来的。

 [Function(Name="dbo.prcSelectRegion")]
 public ISingleResult<prcSelectRegionResult> prcSelectRegion([Parameter(Name="@ID", DbType="Int")] System.Nullable<int> _ID, [Parameter(Name="@desc", DbType="VarChar(50)")] ref string _desc)
 {
  IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), _ID, _desc);
  _desc = ((string)(result.GetParameterValue(1)));
  return ((ISingleResult<prcSelectRegionResult>)(result.ReturnValue));
 }

其他地方怎么访问呢。就是这个东西

 DataClassesDataContext dc = new DataClassesDataContext();
            string desc = String.Empty;
            var result = dc.prcSelectRegion(2,ref desc);//2就是输入参数。desc就是输出参数要使用ref

result就是region中的数据结果

本文使用Blog_Backup未注册版本导出,请到soft.pt42.com注册。

转载于:https://www.cnblogs.com/zjypp/archive/2007/08/17/2319487.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值