使用ABP自带的例子来说明,例如有如下的接口定义。 public interface ITaskAppService : IApplicationService{GetTasksOutput GetTasks(GetTasksInput input);void UpdateTask(UpdateTaskInput input);void CreateTask(CreateTaskInput input);} 然后其使用动态发布Web API的方式类似如下逻辑所示。 Configuration.Modules.AbpWe...
public class ProductAppService : ApplicationService, IProductAppService { public Task CreateAsync(ProductCreationDto input) { // TODO } }public class ProductCreationDto { [Required] [StringLength(100)] public string Name { get; set; } [Range(0, 999.99)] public decimal Price { get; set; }...
此页面与 非常相似CreateModal.cshtml,除了: 它包括一个abp-input用于Id存储Id编辑书的属性(这是一个隐藏的输入)。 它Books/EditModal用作发布 URL。 EditModal.cshtml.cs 打开EditModal.cshtml.cs文件(EditModalModel类)并将其替换为以下代码: usingMicrosoft.AspNetCore.Mvc;usingMicrosoft.AspNetCore.Mvc.RazorPage...
query.OrderBy(input.Sorting):query.OrderByDescending(t=>t.CreationTime);//获取总数vartasksCount=query.Count();//默认的分页方式//var taskList = query.Skip(input.SkipCount).Take(input.MaxResultCount).ToList();//ABP提供了扩展方法PageBy分页方式vartaskList=query.PageBy(input).ToList();returnnew...
Task<TEntityDto>Update(TUpdateInput input); } } 现在这些接口全部调整如下所示了。 namespaceAbp.Application.Services {publicinterfaceIAsyncCrudAppService<TEntityDto, TPrimaryKey,inTGetAllInput,inTCreateInput,inTUpdateInput,inTGetInput,inTDeleteInput>: IApplicationService, ITransientDependencywhereTEntity...
在ABP的设计中,有两种不同类型的DTO,分别是用于新增、修改、删除的Input DTO,和用于查询的Output DTO。 Unit of Work: 工作单元。工作单元与事务类似,封装了一系列原子级的数据库操作。 2. 核心层(Core项目) 核心层包含领域实体、值对象、聚合根,以及领域上下文实现。
public override Task<AuditLogDto> Update(AuditLogDto input) { return base.Update(input); } /// <summary> /// 屏蔽删除接口 /// </summary> [RemoteService(false)] public override Task Delete(EntityDto<long> input) { return base.Delete(input); ...
publicvoidUpdateTask(UpdateTaskInput input){//We can use Logger, it's defined in ApplicationService base class.Logger.Info("Updating a task for input: "+input);//获取是否有权限bool canAssignTaskToOther=PermissionChecker.IsGranted(PermissionNames.Pages_Tasks_AssignPerson);//如果任务已经分配且未分...
input.MapTo(task); } } 这里我们看到一个Application Service(应用服务)方法。在DDD中,应用服务直接用于表现层(UI)执行应用程序的用例。那么在UI层中就可以通过javascript ajax的方式调用UpdateTask方法。 var _taskService = abp.services.app.task;
验证:ABP自动检查input是否为null。根据标准的数据注释特性和自定义验证规则,检查一个input的所有属性。如果请求没有通过验证,会抛出一个对应的验证异常。 审计日志:根据约定和配置,每个请求的用户、浏览器、Ip地址、调用服务、方法、参数、调用时间、执行耗时和其它的一些信息会被自动地保存下来。 工作单元:在ABP里,每...