本文主要介绍在ADO.NET Entity Framework中使用存储过程来进行查询、插入、更新、删除操作。
使用一下SQL建立实例数据库,下面选择了Northwind库来执行
SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Group]( [GroupID] [int] IDENTITY(1,1) NOT NULL, [GroupName] [nvarchar](20) NOT NULL, CONSTRAINT [PK_Group] PRIMARY KEY CLUSTERED ( [GroupID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[User]( [UserID] [int] IDENTITY(1,1) NOT NULL, [UserName] [nvarchar](20) NOT NULL, [UserGroupID] [int] NOT NULL, CONSTRAINT [PK_User] PRIMARY KEY CLUSTERED ( [UserID] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO ALTER TABLE [dbo].[User] WITH CHECK ADD CONSTRAINT [FK_User_Group] FOREIGN KEY([UserGroupID]) REFERENCES [dbo].[Group] ([GroupID]) GO ALTER TABLE [dbo].[User] CHECK CONSTRAINT [FK_User_Group] GO create procedure CreateUser @username nvarchar(20), @groupid int as begin insert into [User] ([UserName] ,[UserGroupID] ) values(@username,@groupid) end go create procedure DeleteUser @userid int, @groupid int as begin delete from [User] where UserID=@userid end go create procedure UpdateUser @userid int, @username nvarchar(20), @groupid int as begin update [User] set [UserName] =@username ,[UserGroupID] =@groupid where [UserID] =@userid end go create procedure GetUserInfo @userid int as begin select [UserID],[UserName],[UserGroupID] from [User] where [UserID] =@userid end go insert into [Group] ([GroupName] ) values('管理员') insert into [Group] ([GroupName] ) values('注册用户') insert into [Group] ([GroupName] ) values('游客')
执行成功建立了User和Group两个表以及4个存储过程,CRUD User表的4个存储过程
由于之前我已经建立了EDMX模型,现在我要更新一下,右键模型板
右键 功能很强大,其中有打开Model Browser 窗口,从数据库更新模型,和从模型生成数据库(反映射),选择Update Model from Database 项目选择添加选项卡,选中全部复选框,像生成时候一样即可
查询存储过程的使用
点选下图中的红框处,右键点击函数导入,选择创建函数导入,输入方法名和返回类型。
添加函数后就可以通过方法来调用存储过程了。
NorthwindEntities ne = new NorthwindEntities(); var user = ne.GetUserInfo(1); foreach (User u in user) { string userName = u.UserName; }
对应的存储过程是
ALTER procedure [dbo].[GetUserInfo] @userid int as begin select [UserID],[UserName],[UserGroupID] from [User] where [UserID] =@userid end
添加、修改、删除存储过程的ADOEF 使用
添加、修改、删除的方法也可以直接绑定到实体对象上,通过模型浏览器。
要特别注意,还要添加对应的属性
插入/更新/删除操作只需要像平时一样使用AddToUser/更新实体类并SaveChanges/DeleteObject这些方法就可以了。
未完成!
参考文章:
冯瑞涛
分类:
[01] .Net X
【推荐】国内首个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 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?