• 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注册。

  • 相关阅读:
    Discrete Logging
    P1378 油滴扩展
    P3390 【模板】矩阵快速幂
    RMQ算法
    P1372 又是毕业季I
    P1440 求m区间内的最小值
    高效判断素数方法
    阿尔贝喝我
    浙江大学PAT上机题解析之2-11. 两个有序链表序列的合并
    顺序队列之C++实现
  • 原文地址:https://www.cnblogs.com/zjypp/p/2319487.html
Copyright © 2020-2023  润新知