分类:
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-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:
50010702506256
50010702506256
欢迎加群交流技术