0

我有大约 50 个需要简单直接的 CRUD 操作的主表,我的表已经在 sql 数据库中可用。

我的问题是如何使它通用,这样我就不需要为主表手动创建每个单独的页面。我在 Boilerplate 框架中看到了一些 ABP CRUDEntityAscyn 类,但我想知道如何将它带到表示层(.cshtml)。

4

1 回答 1

1

如果您需要为特定实体创建具有 Create、Update、Delete、Get、GetAll 方法的应用程序服务,您可以从 CrudAppService(或 AsyncCrudAppService,如果您想创建异步方法)类继承以更轻松地创建它。CrudAppService 基类是通用的,它获取相关的 Entity 和 DTO 类型作为通用参数,并且是可扩展的,允许您在需要自定义功能时覆盖它。

public class Task : Entity, IHasCreationTime
{
    public string Title { get; set; }

    public string Description { get; set; }

    public DateTime CreationTime { get; set; }

    public TaskState State { get; set; }

    public Person AssignedPerson { get; set; }
    public Guid? AssignedPersonId { get; set; }

    public Task()
    {
        CreationTime = Clock.Now;
        State = TaskState.Open;
    }
}

[AutoMap(typeof(Task))]
public class TaskDto : EntityDto, IHasCreationTime
{
    public string Title { get; set; }

    public string Description { get; set; }

    public DateTime CreationTime { get; set; }

    public TaskState State { get; set; }

    public Guid? AssignedPersonId { get; set; }

    public string AssignedPersonName { get; set; }
}

public class TaskAppService : AsyncCrudAppService<Task, TaskDto>
{
    public TaskAppService(IRepository<Task> repository) 
        : base(repository)
    {

    }
}

public interface ITaskAppService : IAsyncCrudAppService<TaskDto>
{

}

public class TaskAppService : AsyncCrudAppService<Task, TaskDto>, ITaskAppService
{
    public TaskAppService(IRepository<Task> repository) 
        : base(repository)
    {

    }
}

从客户端代码调用 webapi:

var _editionService = abp.services.app.edition
  _editionService.deleteEdition({
                            id: edition.id
                        }).done(function () {
                            getEditions();
                            abp.notify.success(app.localize('SuccessfullyDeleted'));
                        });

阅读更多 > https://aspnetboilerplate.com/Pages/Documents/Application-Services#crudappservice-and-asynccrudappservice-classes

于 2017-08-28T08:31:48.883 回答