0

我正在阅读关于 abp.io 的教程:
https ://docs.abp.io/en/abp/latest/Tutorials/Part-1?UI=MVC#create-the-application-service

我创建了服务:

using Abp.Application.Services;

public interface IBookAppService : 
    ICrudAppService< //Defines CRUD methods
        BookDTO , //Used to show books
        Guid, //Primary key of the book entity
        PagedAndSortedResultRequestDto, //Used for paging/sorting on getting a list of books
        CreateUpdateBookDto, //Used to create a new book
        CreateUpdateBookDto> //Used to update a book
{

}

但是界面显示错误:

类型“ BookDTO”不能用作TEntityDto泛型类型或方法“ ”中的类型参数“ ICrudAppService<TEntityDto, TPrimaryKey, TGetAllInput, TCreateInput, TUpdateInput>”。没有从 ' BookDTO' 到 ' Abp.Application.Services.Dto.IEntityDto<System.Guid>' 的隐式引用转换。

BookDTO如下:

using Volo.Abp.Application.Dtos;

public class BookDTO : AuditedEntityDto<Guid>
{
    public string Name { get; set; }

    public BookType Type { get; set; }
    public DateTime PublishDate { get; set; }
    public float Price { get; set; }
}
4

2 回答 2

1

CreateUpdateBookDto 必须是相同的主键类型。

public class CreateUpdateBookDto: AuditedEntityDto<Guid> {
}
于 2020-04-30T13:42:18.110 回答
1

您正在混合:

  • Abp.Application.Services.ICrudAppService<TEntityDto, TPrimaryKey, ...>
  • Volo.Abp.Application.Dtos.IEntityDto<TKey>

对于 ABP 框架 (abp.io),使用Volo.Abp包:

  • Volo.Abp.Application.Services.ICrudAppService<TEntityDto, in TKey, ...>

相关:哪个是真正的 ASP.NET Boilerplate 项目?

要更改的文件

IBookAppService.cs:

// using Abp.Application.Services;
// using Abp.Application.Services.Dto;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

BookAppService.cs:

// using Abp.Application.Services;
// using Abp.Application.Services.Dto;
// using Abp.Domain.Repositories;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;
using Volo.Abp.Domain.Repositories;

CreateUpdateBookDTO.cs:

// using Abp.AutoMapper;

Acme.BookStore.Application.Contracts.csproj:

<!-- <PackageReference Include="Abp" Version="5.6.0" /> -->
<!-- <PackageReference Include="Abp.AutoMapper" Version="5.6.0" /> -->
<PackageReference Include="Volo.Abp" Version="2.6.2" />
<PackageReference Include="Volo.Abp.AutoMapper" Version="2.6.2" />
于 2020-05-01T13:26:14.333 回答