咨询IEnumerable的作用及ASP.NET MVC中GetRoles方法代码解析
IEnumerable的作用及代码解析
一、IEnumerable的核心作用
- 是.NET里最基础的集合遍历接口,只要实现它的类型,都能用
foreach循环遍历元素,是统一遍历各种集合的标准。 - 支持延迟执行:默认不会一次性把所有数据加载到内存,适合处理大数据量,能有效节省内存开销。
- 作为方法返回类型时,提供了抽象性:调用方只需要知道“能遍历拿数据”,不用管底层是List、数组还是别的集合,降低代码耦合度。
二、代码中标记行的功能拆解
1. public IEnumerable<Role> GetRoles()
这是一个公共方法的定义:
public:允许外部类调用这个方法。IEnumerable<Role>:规定方法返回一个可遍历的Role类型集合,调用方可以通过遍历拿到所有角色数据。GetRoles:方法名,从语义上就能看出这是用来获取角色列表的方法。
2. return con.Query<Role>("Usp_GetRoles", null, null, true, 0, CommandType.StoredProcedure).ToList();
这行是方法的核心业务逻辑,拆解开说:
con.Query<Role>(...):这是轻量级ORM框架Dapper的扩展方法,作用是执行名为Usp_GetRoles的存储过程,把查询到的数据库数据自动映射成Role类型的对象集合。里面的参数依次是:存储过程名称、传入存储过程的参数(null代表无参数)、事务对象(null代表不使用事务)、是否缓冲查询结果、命令超时时间、命令类型(明确指定是存储过程)。.ToList():把Dapper返回的延迟执行结果立即转换成List<Role>。因为外层的using块会在代码执行完后销毁数据库连接,如果不立即执行查询,后续遍历的时候连接已经关闭,就会报错。return:把这个List<Role>返回给调用方,因为List<Role>实现了IEnumerable<Role>接口,完全符合方法的返回类型要求。
内容的提问来源于stack exchange,提问作者Akshay Malvankar
相关产品推荐
相关产品推荐

