如何修复“ InvalidCastException:无法将类型为System.Int32的对象转换为类型为System.String的

时间:2019-07-28 21:33:11

标签: c# asp.net-core

从我的mysql数据库中检索数据时,我收到上述错误消息。

该方法可以与其他表(例如“用户”)一起正常工作,但是,我没有看到为什么它也不能与客户表一起工作的问题。

客户实体:

public class Client : IEntity<int>
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public int Id { get; set; }

        public string Name { get; set; }

        public Entities Entity { get; set; }

        public ICollection<ClientBusinessSector> Client_Business_Sectors{ get; set; }
            = new List<ClientBusinessSector>();

        [ForeignKey("Country_Id")]
        public Country Country { get; set; }
        public int Country_Id { get; set; }

        [ForeignKey("City_Id")]
        public City City { get; set; }
        public int City_Id { get; set; }

        public string Address { get; set; }

        public ICollection<ClientUser> Client_Users { get; set; }
            = new List<ClientUser>();

        public ICollection<ClientService> Client_Services { get; set; }
            = new List<ClientService>();

        public enum Entities
        {
            GmbH = 1,
            AG,
            Einzelfirma,
            Kollektivgesellschaft,
            Genossenschaft
        }
    }

控制器级别:

[HttpGet()]
    public async Task<IActionResult> GetAllClients()
    {
        var clientsFromRepo = await _clientRepository.GetAllAsync();
        var clients = Mapper.Map<IEnumerable<ClientDto>>(clientsFromRepo);

        return Ok(clients);
    }

正在从控制器调用的存储库方法:

public async Task<IEnumerable<TEntity>> GetAllAsync()
        {
            return await _context.Set<TEntity>()
                .ToListAsync();
        }

我需要从数据库中获取客户列表。即使它是一个空列表,它也应返回200 OK状态。存储库方法可以与其他表一起正常工作,但由于某种原因不能与客户端表一起使用

我收到的错误消息: InvalidCastException:无法将类型为“ System.Int32”的对象转换为类型为“ System.String”。

1 个答案:

答案 0 :(得分:1)

我刚发现错误: 我在DbContext中有一个模型构建器。

protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Client>()
            .Property(c => c.Entity)
            .HasConversion<string>();
    }

将其取出,它应该可以正常工作:)