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

    开发中经常使用到日志记录功能,Log4.net可以将日志记录到文件中,也可以记录到数据库中,使用非常方便,之前也一直在用,最近也参照了一下网上的资料,想简单总结一下 本文重在通过通用日志类来使用Log ...

  2. Python Tool Visual Studio简单使用

    由于一直在做.NET的开发,一直用的IDE是VS系列的,所以想用VS也能开发Python,刚好微软提供一个插件PTVS(Python Tool Visual Studio)专门应用于Python开发的 ...

  3. sql server创建表相关

    1,设置主键的sql的三种方式 a.字段名 int primary key b.字段名 int constraint 主键名 primary key clustered(字段名) c.创建表是,后置一 ...

  4. wsus安装与部署——下

    转载请注明原出处 write by xiaoyang 一.            测试 1.         使用客户机或者在域环境下编辑GPO打开组策略 2.         配置自动更新 3.   ...

  5. Cocos移植到Android的一些问题-SQLite3数据库移植问题

    首选我们讨论一下SQLite3数据库移植问题.我们在第14章节介绍了在Win32平台使用SQLite3数据库,我们介绍了两种配置环境的方法:一种是使用Cocos2d-x提供的SQLite3库配置,另一 ...

  6. MYSQL序言

    我写MYSQL的文章主要的原因:我发现网上关于MYSQL的文章比较少,而且很多都是参差不齐,几乎找不到可以比较全面的介绍:例如一篇文章介绍如何增删改查,却没有介绍批量新增:于是下次工作中用到的时候又要 ...

  7. [Bootstrap]组件(四)

    导航条 移动设备上折叠(可开关),超过规定视口标签时候水平展开模式 依赖插件 注意点:导航条内元素过多或其他原因导致元素内元素宽度过长,会引起折行-->解决:a.减少导航内元素或者减少宽度  b ...

  8. http: URL、请求方式

    URL:统一资源定位符,可以从互联网得到和访问资源,是标准资源的位置 结构包括协议.服务器名称(IP地址).端口(有的服务器需要).路径.文件名 协议:告诉浏览器如何处理打开的文件,常用的就是http ...

  9. JS正则表达式基础总结

    定义正则: 1 var re = new RegExp(“a”); //RegExp对象.参数就是我们想要制定的规则.有一种情况必须用这种方式,下面会提到. 2 var re = /a/; // 简写 ...

  10. 简明Python中的一个小错误

    最近在学Python,先看的是<Python基础教程>,后来经别人推荐,感觉网络上的<简明Python教程>也挺好的,在里面发现一个小错误. 网址如下:http://sebug ...