zoukankan      html  css  js  c++  java
  • ADO.NET Entity Framework 中使用存储过程

    本文主要介绍在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

    冯瑞涛
  • 相关阅读:
    DES 算法的 C++ 与 JAVA 互相加解密
    ORACLE SQL 小记
    ACE 的头文件包含
    WTL 程序中显示 HTML
    GIS 中地理坐标和屏幕坐标的标准转换方法
    算盘中国古代伟大的计算器
    DELPHI 开发的 OCX 控件在 MFC 程序中编辑框快捷键不好使的解决
    服务端程序线程运行信息管理器
    ATL::CImage 的透明通道的处理与格式转换
    kinect sdk开发入门WPFdemo笔记
  • 原文地址:https://www.cnblogs.com/finehappy/p/1680339.html
Copyright © 2011-2022 走看看