存储过程——在LINQ中使用(六)
上述几篇都将了存储与数据库,关联的一些实例,首先感谢各位大神们在前几篇文章中提到的问题,本人还在学习中,这次介绍下在linq中如何应用存储过程;
- LINQ简介
- 语言集成查询(LINQ)在对象领域和数据领域架起了一座桥梁
- LINQ提供了一种跨领域各种数据和数据格式是数据的一致模型
- 微软的ORM解决方案
- LINQ项目引用解决方案,面向.NET
- VSIDE对LINQ的强大支持
- LINQ原理
- LINQ to SQL 会将对象模型中的语言集成查询转为SQL,然后将他们发送到数据库中进行执行
- 当数据库返回结果时,LINQ to SQL 会将它们转换回你可以用自己编程语言处理的对象
- 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();//查询所有产品类型 }
总结:
- LINQ to SQL的方法实际上解决了大部分的数据转换对象关系问题
- 存储过程在O/R中生成的对象中,其实就类里面的一个方法,传递参数和存储过程一致
疑问:
- LINQ 和 ADO.NET 都能解决与数据交互问题,那具体什么时候引用呢?各有什么优势
- O/R貌似需通过VS工具操作,有没有更好的方法去封装他
- 存储过程在O/R中转换程函数,如果出现异常如何去维护,是更改O/R生成的类还是直接更改存储过程
上述问题,希望大神们指点,小弟初次接触存储过程,有不足指出望直接指出。。。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述