上述几篇都将了存储与数据库,关联的一些实例,首先感谢各位大神们在前几篇文章中提到的问题,本人还在学习中,这次介绍下在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. Handoff使用指南 - 理论篇

    Handoff简介 Handoff是iOS 8 和 OS X v10.10中引入的功能,可以让同一个用户在多台设备间传递项目.In iOS 9 and OS X v10.11 支持了Spotlight ...

  2. CSS布局 ——从display,position, float属性谈起(转)

    CSS布局 ——从display,position, float属性谈起   页面布局,或者是在页面上做些小效果的时候经常会用到 display,position和float 属性,如果对它们不是很了 ...

  3. C#中数组、ArrayList和List<T>三者的发展历程

    在C#中数组,ArrayList,List使我们用的最多的类型之一.他们共同的作用都是能够存储一组对象. 那么问题来了: (1)为什么要有三个一样作用的东西呢?他们都很完美吗? (2)谁先出生,又是因 ...

  4. UI1_ScrollViewHomeWork

    // // AppDelegate.m // UI1_ScrollViewHomeWork // // Created by zhangxueming on 15/7/13. // Copyright ...

  5. python基础:搜索路径

    如何将写好的脚本或者是模块加入python的搜索路径? >>>import sys >>> sys.path ['', '/Library/Frameworks/P ...

  6. Mapper映射器

    在两个独立的对象之间建立通信的对象 需要在两个必须相互隔离的子系统间建立通信. 可能是因为无法修改已有的子系统,或者不愿意在两者之间建立依赖关系.甚至不愿意这两个子系统与另一个部件间建立依赖关系. 运 ...

  7. Java对象初始化详解(转)

    在Java中,一个对象在可以被使用之前必须要被正确地初始化,这一点是Java规范规定的.本文试图对Java如何执行对象的初始化做一个详细深入地介绍(与对象初始化相同,类在被加载之后也是需要初始化的,本 ...

  8. struts2,hibernate4,spring3配置时问题汇总及解决办法

    文章转载于wanglihu的博客,原文链接http://wanglihu.iteye.com/blog/1897718 1.java.lang.NoClassDefFoundError: org/ob ...

  9. Java Dao模式通过JDBC连接数据库的操作

    Java程序访问数据库: 1.获取数据库厂商提供的驱动(jdbc接口的实现类) 如ojdbc14.jar——Oracle数据库驱动jar包 mysql-connector-java-5.1.8-bin ...

  10. OpenGL 回顾——简化版的窗体(包含鼠标控制,普通键位控制,以及镜面反射)

    // OpenGLBook.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" //变量声明 static GLfloat spin =0.0; ...