随笔 - 705  文章 - 0  评论 - 1103  阅读 - 138万 

本文主要介绍在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模型,现在我要更新一下,右键模型板

image

右键 功能很强大,其中有打开Model Browser 窗口,从数据库更新模型,和从模型生成数据库(反映射),选择Update Model from Database 项目选择添加选项卡,选中全部复选框,像生成时候一样即可

 

image

 

查询存储过程的使用

点选下图中的红框处,右键点击函数导入,选择创建函数导入,输入方法名和返回类型。

image

添加函数后就可以通过方法来调用存储过程了。

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 使用

 

添加、修改、删除的方法也可以直接绑定到实体对象上,通过模型浏览器。

image

要特别注意,还要添加对应的属性

image

插入/更新/删除操作只需要像平时一样使用AddToUser/更新实体类并SaveChanges/DeleteObject这些方法就可以了。

 

 

 

未完成!

 

参考文章:

http://www.pin5i.com/showtopic-21430.html

posted on   冯瑞涛  阅读(2702)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示