本文主要介绍在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这些方法就可以了。




未完成!