EF使用存储过程
ef4.1 没有了edmx等复杂的东西 变得简单 干净 但如何使用存储过程,存储过程可以返回表 可以返回数值 也有可能是执行修改 删除 增加等 该怎么做?
说这个问题前 依然先说下我的观点.个人认为 既然使用orm框架 就应该把业务逻辑等 都放到业务逻辑层 而不应该再使用存储过程。我更偏重重业务逻辑层 轻存储过程这样的开发~
再ef4.0里 添加存储过程 比较容易 有edmx 调一调 存储过程就添加上了 但是在ef4.1里 只有干净的poco 不再有edmx了 改怎么办呢?尤其是存储过程可以是查表 查值 或者执行修改删除.
一个一个来解决
1.执行返回表类型的存储过程
先上存储过程 随手写的一个最简单的
Create PROCEDURE [dbo].[ProSelectStu] @StudentID int AS BEGIN Select Student.* from Enrollment,Student where Enrollment.StudentID=Student.StudentID and Enrollment.StudentID=@StudentID END GO
执行存储过程的方法 是用直接执行sql的方式 我在我的文章第九篇 有过详细的介绍~大家可以先去看下
执行表的存储过程 其实是非常强大的 延迟加载 等都有体现 博客园的陆老师已经写了 写的非常清楚了~我这里就不再写了 大家可以去他那看下 提供个连接~
2.执行返回值的存储过程
先上存储过程
CREATE PROCEDURE [dbo].[ProSelectCount] @StuId int AS BEGIN select COUNT(*) from Enrollment where StudentID=@StuId END
一个简单的查询数量
这里用sqlQuery 执行访问 数据库 因为需要提供返回类型 而我们返回的是int 所以先得到int的类型
3.执行增删改
CREATE PROCEDURE [dbo].[ProDel] @stuId int, @courseId int AS BEGIN DELETE FROM [WLFSchool].[dbo].[Enrollment] where StudentID=@stuId and CourseID=@courseId END
这个用的是操作数据库 返回受影响行数
============ 欢迎各位老板打赏~ ===========
与本文相关的文章
- · C#/EF获取随机数据
- · Entity Framework教程(8)
- · Entity Framework教程(7)
- · Entity Framework 教程(4)
- · Model compatibility cannot be checked because the database does not contain model metadata
- · Entity Framework教程(3)
- · Entity Framework 教程(2)
- · Entity Framework教程(1)
- · Linq Max函数用法
- · EF数据丢失
- · EF使用数据库视图
- · EF如何执行SQL函数