摘要

本文主要介绍在ADO.NET Entity Framework中使用存储过程来进行查询、插入、更新、删除操作。

建立示例数据库

数据库脚本:

 

Code

它将建立2个有外键关系的数据表和4个存储过程,分别为查询、插入、更新、删除。

设置实体数据模型

在项目中加入一个ADO.NET Entity Data Model文件,选择从数据库生成模型,在选择数据库对象时要钩上表和存储过程,这样就完成了实体数据模型的生成。

但是如果此时你用ADO.NET Framework对数据进行CRUD操作并不会使用存储过程,我们需要将存储过程进行映射。查询和另外三项操作的映射方式不同,我们分开讨论。
先说查询存储过程的导入。在模型浏览器中右键点击函数导入,选择创建函数导入。

在弹出的对话框中设置选择一个用于查询的存储过程名称,设置以后用于调用该方法的函数名称,并设置该方法的返回类型。

点击确定完成设置,此时在模型浏览器的函数导入处会多了一个函数,以后即可通过该函数调用此存储过程进行数据查询。
接下来说插入、更新、删除存储过程的影射。
这三个存储过程需要同时映射到实体类上,也就是说如果你为一个实体类的插入方法映射了存储过程,那么更新和删除也必须映射存储过程。
我们的这3个存储过程都是对User表进行操作,所以选中UserInfo实体类,在映射详细信息的将实体映射到函数选项卡进行设置。

分别在选择插入/更新/删除函数的地方选择对应的存储过程名,然后设置属性的映射。一般的存储过程参数会自动设置好映射,但是外键列需要手动设置。
Delete存储过程中的groupid是一个没有用的参数,加上这个参数的原因是在插入和更新操作中都涉及到了2个实体类,如果删除函数中没有映射Group这个导航属性会报2048错误。
现在,CRUD的存储过程都已经映射好了。

调用存储过程

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

1 Entities db = new Entities();
2 UserInfo u = db.GetUserInfo(userid).FirstOrDefault();

 

Demo下载

点击下载

 

本文适用于 Microsoft .NET Framework 3.5 SP1
posted on 2008-12-06 00:32  Magic.Z  阅读(15704)  评论(19编辑  收藏  举报