ABP (ASP.NET Boilerplate) 应用程序开发框架 新手教学 No.5 建立仓储 Repository

?ABP (ASP.NET Boilerplate) 应用程序开发框架 新手教学 No.0 索引



ABP有内建基本常用的仓储功能例如CRUD,而我们可以进行扩充

在架构上仓储的界面与实践是拆开分别在Domain层与基础设施层的

先说仓储的界面部分

这里来做一个用Map的ID来取得对应Player集合的一个仓储界面

首先一样按照架构我们在Core项目中开一个IRepositories数据夹来放

MyCompany.MyProject.CoreIRepositories

然后我们新增一个界面?IPlayerRepository.cs

using Abp.Domain.Repositories;
using MyCompany.MyProject.Entities;
using System.Collections.Generic;

namespace MyCompany.MyProject.IRepositories
{
    public interface IPlayerRepository : IRepository
    {
        List GetPlayersWithMap(long mapID);
    }
}

这样我们就完成了仓储的界面定义

而实践部分我们来到?AbsoluteDuo_V4.EntityFrameworkRepositories

建立一个类 PlayerRepository.cs 该类继承ABP提供的基底类?MyProjectRepositoryBase?并且继承我们刚刚定义的界面?IPlayerRepository

using Abp.EntityFramework;
using MyCompany.MyProject.Entities;
using MyCompany.MyProject.IRepositories;
using System.Collections.Generic;
using System.Linq;

namespace MyCompany.MyProject.EntityFramework.Repositories
{
    public class PlayerRepository : MyProjectRepositoryBase, IPlayerRepository
    {
        public PlayerRepository(IDbContextProvider dbContextProvider) : base(dbContextProvider)
        {

        }

        public List GetPlayersWithMap(long mapID)
        {
            // GetAll()返回一个IQueryable,我们可以通过它来查询
            var query = GetAll();

            // 也可以直接使用EF的DbContext对象
            //var query2 = Context.Players.AsQueryable(); 

            // 另一种选择:直接使用Table属性代替"Context.Players",都是一样的。
            //var query3 = Table.AsQueryable();

            if (mapID > 0)
            {
                query = query.Where(c => c.MapID == mapID);
            }
            return query.ToList();
        }

        public async Task> GetPlayersWithMapAsync(long mapID)
        {
            return await GetAllListAsync(c => c.MapID == mapID);
        }
    }
}
  • GetAll()

    返回IQueryable

    因为有延迟载入(Lazy Loading)的特性,所以实际与数据库连接是在使用ToList()方法时

  • GetAllList()

    返回List

    这个则是在调用时就会立即从数据来源取出数据

到这边仓储就已经建立完成了



下一篇

ABP (ASP.NET Boilerplate) 应用程序开发框架 新手教学 No.6?建立应用服务

参照

一步一步使用ABP框架搭建正式项目系列教程

原文:大专栏  ABP (ASP.NET Boilerplate) 应用程序开发框架 新手教学 No.5 建立仓储 Repository

原文地址:https://www.cnblogs.com/chinatrump/p/11505605.html

时间: 2024-10-12 19:35:22

ABP (ASP.NET Boilerplate) 应用程序开发框架 新手教学 No.5 建立仓储 Repository的相关文章

ABP之什么是ABP(ASP.NET Boilerplate)

1.介绍 ABP是开源的且文档比较齐全的应用程序框架.其实它不仅仅是个框架,考虑其最佳实践,ABP更提供了基于领域驱动设计(DDD)的强大价格模型. ABP支持最新的ASP.NET Core和EF Core,同时也支持ASP.NET MVC 5.x和EF 6.x. 2.快速看一个示例 public class TaskAppService : ApplicationService, ITaskAppService { private readonly IRepository<Task> _ta

ABP(ASP.NET Boilerplate Project)学习总结

ABP(ASP.NET Boilerplate Project),现下比较流行的一种web框架,因为公司新项目准备使用这种框架,所以写下这篇文章记录下自己一步一步搭建的过程,就当做是对学习的一个总结与分享. 第一步:通过boilerplate模版创建解决方案 ABP框架官网:http://www.aspnetboilerplate.com/ . 可供选择的体系结构有两种: 1.Single Page Web Application :单页面应用程序 2.Muli Pate Web Applica

.NET最流行的Web应用框架ABP ASP.NET CORE

介绍 .NET 下有很多优秀的web开发框架,热度最高的应该还是ASP.NET Boilerplate - Web Application Framewor 因为ABP是一个通用的开发框架,可以用来开发各种场景的web应用程序,开发的精力只要放在业务上就可以了,而且前端的技术也是流行的框架,还有ABP的生态目前还是不错的,有公司在维护,还有很多开发者也在维护中,上面提到的ASP.NET Boilerplate 同时支持.NET Framework和.NET Core,目前已经非常的成熟了,应用在

ASP.NET Boilerplate终于发布v1.0了

(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:ABP经过2年多的开发,终于发布第一个主要版本了,谨此提醒ABP的使用者. ASP.NET Boilerplate之前顺带介绍过两次.下面直接摘抄一点阳铭的介绍(http://www.cnblogs.com/mienreal/p/4528641.html): ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. ASP.NE

&lt;&lt;ASP.NET Boilerplate 文档&gt;&gt; 1.1 介绍

介绍 一个快速示例 其它特性 启动模板 如何使用 介绍 我们总是对不同的需求开发不同的应用.但至少在某些层面上,一次又一次地重复实现通用的和类似的功能.如:授权,验证,异常处理,日志,本地化,数据库连接管理,设置管理,审核日志等功能.所以我们创建架构和最佳实践,如分层和模块架构,DDD,依赖注入等,并尝试开发应用时基于一些约定. 由于所有这些是非常耗时而且很难单独创建并可适用于每个项目,许多公司创建自己的框架,他们用自己的框架能快速开发新应用而且不出错.但不是所有的公司都是幸运的,大部分公司没有

ASP.NET MVC Bootstrap极速开发框架

前言 每次新开发项目都要从头开始设计?有木有一个通用的快速开发框架?并且得是ASP.NET MVC  And Bootstrap?数据库不要手工创建?框架对未来业务支持的扩展性好?这么简单的功能还需要一天搭建基础环境?能不能只关心我所需要的业务? 有这样的一个项目,基于ASP.NET MVC.EntityFramework.Memcached.Bootstrap的快速项目开发框架,只需3秒钟即可创建一个带有简单用户管理的项目. 一键安装 懒人一键安装包下载地址,双击“install.bat”批处

在CentOS上部署Asp.net Core应用程序

作为一个Linux新手,许多人向我鼓吹说CentOS多么强大,于是我就开始把一个演示程序发布到CentOS,想试一下它到底有多强大.在此之前,我将同样的程序已经成功发布到了Ubuntu,我觉得,既然已经有了前一次的成功经验,不论CentOS还是Ubuntu都是Linux,道理应该差不多吧.但事实证明,还是有些差异的,某些在CentOS上频出的问题在Ubuntu上却没有,所以我的感觉是Ubuntu部署Asp.net Core程序更容易些. 过程很不顺利,但最终经过一天摸索已摸清个七八成,应用总算能

[渣译文] 使用 MVC 5 的 EF6 Code First 入门 系列:为ASP.NET MVC应用程序读取相关数据

这是微软官方教程Getting Started with Entity Framework 6 Code First using MVC 5 系列的翻译,这里是第六篇:为ASP.NET MVC应用程序读取相关数据 原文:Reading Related Data with the Entity Framework in an ASP.NET MVC Application 译文版权所有,谢绝全文转载--但您可以在您的网站上添加到该教程的链接. 在之前的教程中您已经完成了学校数据模型.在本教程中你将

学习ASP.NET MVC(一)——我的第一个ASP.NET MVC应用程序

首先运行Visual Studio Express 2012或Visual Web Developer2010 Express或Visual Studio2010/SP1.Visual Studio是一个集成开发环境. 可以使用两种方式来创建新项目. 1) 菜单"文件->新建-->项目"来新建项目. 2) 第二种方法是从开始页面中选择"新建项目",如下图. 创建第一个ASP.NET MVC应用程序 接下来创建我的第一个ASP.NET MVC应用程序,在创