Тип '' нельзя использовать в качестве параметра типа 'TEntityDto' в универсальном типе 'ICrudAppService'.

Я просматривал учебник по 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; }
}

person UDAY SONI    schedule 30.04.2020    source источник
comment
Создайте репро-проект на GitHub.   -  person aaron    schedule 30.04.2020
comment
github.com/udaysoni18/Abp-Project - проект репо   -  person UDAY SONI    schedule 01.05.2020


Ответы (2)


Вы смешиваете:

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

Для ABP Framework (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" />
person aaron    schedule 01.05.2020

CreateUpdateBookDto должен иметь тот же тип первичного ключа.

public class CreateUpdateBookDto: AuditedEntityDto<Guid> {
}
person Lasanga Guruge    schedule 30.04.2020
comment
Как вы пришли к такому выводу из вопроса? - person aaron; 30.04.2020
comment
Я работал в abp, и эта часть отсутствует в их документации. Надеюсь, это сработало для вас - person Lasanga Guruge; 30.04.2020
comment
Нет, это не сработало. Пожалуйста, найдите проект репо - github.com/udaysoni18/Abp-Project - person UDAY SONI; 01.05.2020