zoukankan      html  css  js  c++  java
  • 存储过程——在LINQ中使用(六)

    上述几篇都将了存储与数据库,关联的一些实例,首先感谢各位大神们在前几篇文章中提到的问题,本人还在学习中,这次介绍下在linq中如何应用存储过程;

    • LINQ简介
    1. 语言集成查询(LINQ)在对象领域和数据领域架起了一座桥梁
    2. LINQ提供了一种跨领域各种数据和数据格式是数据的一致模型
    3. 微软的ORM解决方案
    4. LINQ项目引用解决方案,面向.NET
    5. VSIDE对LINQ的强大支持
    • LINQ原理
    1. LINQ to SQL 会将对象模型中的语言集成查询转为SQL,然后将他们发送到数据库中进行执行
    2. 当数据库返回结果时,LINQ to SQL 会将它们转换回你可以用自己编程语言处理的对象
    3. IDE工具提供LINQ(O/R设计器)

    上述所提到的都是一些理论方面的知识,下面先介绍了VS 中如何建立LINQ to SQL(即O/R关系),我们在解决方案中添加LINQ to SQL 类:

    查看生成的后台代码

        public partial class ProductDataContext : System.Data.Linq.DataContext
        {
            
            private static System.Data.Linq.Mapping.MappingSource mappingSource = new AttributeMappingSource();
            
        #region 可扩展性方法定义
        partial void OnCreated();
        #endregion
            
            public ProductDataContext(string connection) : 
                    base(connection, mappingSource)
            {
                OnCreated();
            }
            
            public ProductDataContext(System.Data.IDbConnection connection) : 
                    base(connection, mappingSource)
            {
                OnCreated();
            }
            
            public ProductDataContext(string connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
                    base(connection, mappingSource)
            {
                OnCreated();
            }
            
            public ProductDataContext(System.Data.IDbConnection connection, System.Data.Linq.Mapping.MappingSource mappingSource) : 
                    base(connection, mappingSource)
            {
                OnCreated();
            }
        }

    再回到IDE中

    • 连接数据库,如下

    • 将存储过程直接拖到,上图中所描绘的红色区域

    生成后台代码如下

            [global::System.Data.Linq.Mapping.FunctionAttribute(Name="dbo.productTypeAdd")]
            public int productTypeAdd([global::System.Data.Linq.Mapping.ParameterAttribute(Name="Name", DbType="NVarChar(50)")] string name)
            {
                IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), name);
                return ((int)(result.ReturnValue));
            }

    在程序中应用如下

    后台代码调用LINQ to SQL 如下

            ProductDataContext pdc = new ProductDataContext();
            private void ProuType_Load(object sender, EventArgs e)
            {
                dataGridView1.DataSource = pdc.QueryproductType();
            }
    
            private void btnAdd_Click(object sender, EventArgs e)
            {
                pdc.productTypeAdd(txtProduType.Text);//添加产品类型
                dataGridView1.DataSource = pdc.QueryproductType();//查询所有产品类型
            }

    总结:

    1. LINQ to SQL的方法实际上解决了大部分的数据转换对象关系问题
    2. 存储过程在O/R中生成的对象中,其实就类里面的一个方法,传递参数和存储过程一致

    疑问:

    1. LINQ 和 ADO.NET 都能解决与数据交互问题,那具体什么时候引用呢?各有什么优势
    2. O/R貌似需通过VS工具操作,有没有更好的方法去封装他
    3. 存储过程在O/R中转换程函数,如果出现异常如何去维护,是更改O/R生成的类还是直接更改存储过程

    上述问题,希望大神们指点,小弟初次接触存储过程,有不足指出望直接指出。。。

  • 相关阅读:
    使用jquery插件validate制作的表单验证案例
    POJ2992:Divisors(求N!因子的个数,乘性函数,分解n!的质因子(算是找规律))
    HDU1695:GCD(容斥原理+欧拉函数+质因数分解)好题
    HDU4135Co-prime(容斥原理)
    HDU1796How many integers can you find(容斥原理)
    Miller-Rabin素数测试算法(POJ1811Prime Test)
    乘法逆元+模的运算规则
    因子和与因子个数 (乘性函数)
    费马小定理的证明:
    整数(质因子)分解(Pollard rho大整数分解)
  • 原文地址:https://www.cnblogs.com/tuqun/p/3661062.html
Copyright © 2011-2022 走看看