上述几篇都将了存储与数据库,关联的一些实例,首先感谢各位大神们在前几篇文章中提到的问题,本人还在学习中,这次介绍下在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生成的类还是直接更改存储过程

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

存储过程——在LINQ中使用(六)的更多相关文章

  1. C#编程(六十一)------------LINQ中的扩展方法

    原文链接: http://blog.csdn.net/shanyongxu/article/details/47208401 LINQ中的扩展方法 LINQ中where扩展方法,要想使用,必须导入us ...

  2. Linq中关键字的作用及用法

    Linq中关键字的作用及用法 1.All:确定序列中的所有元素是否都满足条件.如果源序列中的每个元素都通过指定谓词中的测试,或者序列为空,则为 true:否则为 false. Demo: 此示例使用 ...

  3. Linq中使用Left Join

    use Test Create table Student( ID ,) primary key, ) not null ) Create Table Book( ID ,) primary key, ...

  4. 转载Linq中GroupBy方法的使用总结

    Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class St ...

  5. Linq中GroupBy方法的使用总结(转)

    Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均值等. Linq中的Groupby方法也有这种功能.具体实现看代码: 假设有如下的一个数据集: public class St ...

  6. Linq中GroupBy方法的使用总结(转载)

    from:https://www.cnblogs.com/zhouzangood/articles/4565466.html Group在SQL经常使用,通常是对一个字段或者多个字段分组,求其总和,均 ...

  7. Entity Framework 6 Recipes 2nd Edition(11-9)译 -> 在LINQ中使用规范函数

    11-9. 在LINQ中使用规范函数 问题 想在一个LINQ查询中使用规范函数 解决方案 假设我们已经有一个影片租赁(MovieRental )实体,它保存某个影片什么时候租出及还回来,以及滞纳金等, ...

  8. Entity Framework 6 Recipes 2nd Edition(11-11)译 -> 在LINQ中调用数据库函数

    11-11. 在LINQ中调用数据库函数 问题 相要在一个LINQ 查询中调用数据库函数. 解决方案 假设有一个任命(Appointment )实体模型,如Figure 11-11.所示, 我们想要查 ...

  9. 关于Linq中的Lambda表达式中OrderBy的深入理解

    起因:就是一段Linq语句,OrderBy里面的i是什么? IQueryable<Student> slist = (from s in EFDB.Student select s). O ...

随机推荐

  1. JavaScript--匿名函数和闭包(16)

    // 匿名函数:没有名字的函数; // 闭包:可访问一个函数作用域里的变量的函数; 一 匿名函数 // 普通函数 function box(){ // 函数名是box; return 'Lee'; } ...

  2. EL函数

    EL表达式语法允许开发人员开发自定义函数,以调用Java类的方法. •示例:${prefix:method(params)} •在EL表达式中调用的只能是Java类的静态方法. •这个Java类的静态 ...

  3. UI1_Calayer

    // // ViewController.m // UI1_Calayer // // Created by zhangxueming on 15/7/2. // Copyright (c) 2015 ...

  4. AMQ学习笔记 - 05. 客户端模板化

    概述 客户端编程模型中,大部分的步骤都是相同的.将相同的部分做成模板,将不同的部分预留接口,实现者就只需要针对不同的部分提供实现. 设计 类图 发送方客户端 说明: 基于模板的思想,SendTempl ...

  5. 【ASP.NET】获取网站目录的方法

         获取网站物理路径: HttpRuntime.AppDomainAppPath 获取网站虚拟路径: HttpRuntime.AppDomainAppVirtualPath

  6. JSON字符串和js对象转换

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON js数据类型: 字符串.数字 ...

  7. 10款很酷的HTML5动画和实用应用 有源码

    10款很酷的HTML5动画和实用应用,这里有菜单.SVG动画.Loading动画,总有你喜欢的,而且,每一款HTML5应用都提供源代码下载,方便大家学习和研究,一起来看看吧. 1.HTML5 SVG ...

  8. 常用的HTML标签

    文本样式标签 列表标签 有序列表 语法格式: <ol> <li></li> <li></li> <li></li> ...

  9. HDU 5093 Battle ships(二分图最大匹配)

    题意:一个m行n列的图由#.*.o三种符号组成,分别代表冰山.海域.浮冰,问最多可放的炮舰数(要求满足以下条件) 1.炮舰只可放在海域处 2.两个炮舰不能放在同一行或同一列(除非中间隔着一个或多个冰山 ...

  10. Linux驱动编程--基于I2C子系统的I2C驱动的Makefile

    ifeq ($(KERNELRELEASE),) KERNELDIR ?= /lib/modules/$(shell uname -r)/buildPWD := $(shell pwd) TEST = ...