tnblog
首页
视频
资源
登录

ABP 视图生成

3880人阅读 2021/8/31 18:25 总访问:1450544 评论:0 收藏:0 手机
分类: ABP

一.先在数据库生成一个视图,如下:


二.在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 + " ---> ");
            }
          
        }
 
    }





评价
没有个性,不需要签名
排名
6
文章
6
粉丝
16
评论
8
{{item.articleTitle}}
{{item.blogName}} : {{item.content}}
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2024TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术