
一.先在数据库生成一个视图,如下:
二.在ABP程序的Core层创建与数据库里视图所对应的实体如下:
三.在ABP程序的EntityFrameworkCore层下的EntityFrameworkCore文件夹下的seed文件找到xxxDbContext.cs文件,然后在该文件下添加和视图实体相对于的DbQuery<>,如下:
注意:生成视图不用在控制台进行操作。
四.在ABP程序的Core层创建一个接口用来写SQL语句的公共方法(相当于方法的具体框架),如下:
代码:
- public interface ISqlExecuter2
- {
- /// <summary>
- /// 执行给定的命令
- /// </summary>
- /// <param name="sql">命令字符串</param>
- /// <param name="parameters">要应用于命令字符串的参数</param>
- /// <returns>执行命令后由数据库返回的结果</returns>
- int Execute(string sql, params object[] parameters);
-
- /// <summary>
- /// 创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。
- /// </summary>
- /// <typeparam name="T">查询所返回对象的类型</typeparam>
- /// <param name="sql">SQL 查询字符串</param>
- /// <param name="parameters">要应用于 SQL 查询字符串的参数</param>
- /// <returns></returns>
- IQueryable<T> SqlQuery<T>(string sql, params object[] parameters) where T : class;
- }
五.在ABP程序的EntityFrameworkCore(基础设施层)层下的EntityFrameworkCore文件夹下的Repositories文件里去实现SQL语句的具体方法,如下:
代码:
- public class SqlExecuter2 : ISqlExecuter, ITransientDependency
- {
- private readonly IDbContextProvider<TrainingProjectDbContext> _dbContextProvider;
- //依赖注入
- public SqlExecuter2(IDbContextProvider<TrainingProjectDbContext> dbContextProvider)
- {
- _dbContextProvider = dbContextProvider;
- }
- /// <summary>
- /// 执行给定的命令
- /// </summary>
- /// <param name="sql">命令字符串</param>
- /// <param name="parameters">要应用于命令字符串的参数</param>
- /// <returns>执行命令后由数据库返回的结果</returns>
- public int Execute(string sql, params object[] parameters)
- {
- return _dbContextProvider.GetDbContext().Database.ExecuteSqlCommand(sql, parameters);
- }
- /// 创建一个原始 SQL 查询,该查询将返回给定泛型类型的元素。
- public IQueryable<T> SqlQuery<T>(string sql, params object[] parameters) where T : class
- {
- return _dbContextProvider.GetDbContext().Query<T>().FromSql(sql, parameters);
- }
- }
六.在Application层对视图进行仓储操作
6.1 Dto如下
6.2 具体的方法实现
代码:
- public class V_studentfun:TrainingProjectAppServiceBase
- {
- private readonly ISqlExecuter2 _SqlISqlExecuter;
- //依赖注入
- public V_studentfun(ISqlExecuter2 SqlISqlExecuter)
- {
- _SqlISqlExecuter = SqlISqlExecuter;
- }
- /// 查询方法
- public List<V_studentOutDto> GetV_studentlist()
- {
- try
- {
- var s2 = _SqlISqlExecuter.SqlQuery<V_students>("select * from V_students");
- List<V_studentOutDto> Dtolist = new List<V_studentOutDto>();
- foreach (var item in s2)
- {
- V_studentOutDto Dto = new V_studentOutDto();
- Dto.Id = item.Id;
- Dto.Names = item.Names;
- Dtolist.Add(Dto);
- }
- return Dtolist;
- }
- catch (Exception e)
- {
- throw new UserFriendlyException("错误信息: " + e.Message + " ---> ");
- }
-
- }
-
- }
评价
排名
4
文章
473
粉丝
3
评论
2
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256


欢迎加群交流技术