Как отобразить объект значения с помощью Dapper - PullRequest
0 голосов
/ 27 января 2020

У меня есть сущность, которая содержит объекты-значения следующим образом. Когда я пытаюсь извлечь запись из базы данных, я получаю сообщение об ошибке Ошибка анализа столбца 14 (Rg = 16318057X - Строка)

Объект значения состоит из двух полей. Как я могу это исправить?

    public class Rg : ValueObject<Rg>
    {
        public string NumeroRg { get; protected set; }

        public string EstadoEmissor { get; protected set; }

        protected Rg() : base() { }

        private Rg(string numeroRg, string estadoEmissor) : base()
        {
            NumeroRg = (numeroRg == null ? numeroRg : numeroRg.RemoverMascara().Replace(" ", "").ToUpper());
            EstadoEmissor = (estadoEmissor == null ? estadoEmissor : estadoEmissor.Trim().ToUpper());
        }

        public static Rg Factory(string numeroRg, string estadoEmissor)
        {
            return new Rg(numeroRg, estadoEmissor);
        }

        ....
        omitted for brevity
        ....
    }
    public class Lojista : Entity
    {
        public TipoPessoa TipoPessoa { get; private set; }

        public string Nome { get; private set; }

        public string Apelido { get; private set; }

        public Cnpj Cnpj { get; private set; }

        public InscricaoEstadual InscricaoEstadual { get; private set; }

        public string InscricaoMunicipal { get; private set; }

        public Cpf Cpf { get; private set; }

        public Rg Rg { get; private set; }

        protected Pessoa() { }

        ....
        omitted for brevity
        ....
    }

Мои данные сохраняются так:

| Id | Status | CadastradoPor | DataCadastro | ModificadoPor | DataModificacao | TipoPessoa | Nome | Apelido | Cnpj | InscricaoEstadual | EstadoEmissorInscricaoEstadual | InscricaoMunicipal | Cpf | Rg | EstadoEmissorRg |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|

И мой репозиторий выглядит так:

        public override async Task<Lojista> ObterPorIdAsync(Guid id)
        {
            try
            {
                DbConnection conn = DbContext.Database.GetDbConnection();

                const string sql = @"SELECT Lojistas.*, LojistasEmails.*, LojistasEnderecos.*, LojistasTelefones.*
                                     FROM   Lojistas
                                     LEFT JOIN LojistasEmails ON Lojistas.Id = LojistasEmails.LojistaId AND LojistasEmails.Status <> @pStatus
                                     LEFT JOIN LojistasEnderecos ON Lojistas.Id = LojistasEnderecos.LojistaId AND LojistasEnderecos.Status <> @pStatus
                                     LEFT JOIN LojistasTelefones ON Lojistas.Id = LojistasTelefones.LojistaId AND LojistasTelefones.Status <> @pStatus
                                     WHERE  (Lojistas.Id = @pId)";

                IEnumerable<Lojista> queryResult = await conn.QueryAsync<Lojista, LojistaEmail, LojistaEndereco, LojistaTelefone, Lojista>(
                    sql, (lojista, email, endereco, telefone) =>
                    {
                        if (lojista != null)
                        {
                            if (email != null)
                            {
                                lojista.AdicionarEmail(email);
                            }

                            if (endereco != null)
                            {
                                lojista.AdicionarEndereco(endereco);
                            }

                            if (telefone != null)
                            {
                                lojista.AdicionarTelefone(telefone);
                            }
                        }
                        return lojista;
                    }, new { @pId = id, @pStatus = EntityStatus.Excluido }, splitOn: "Id");

                return queryResult.FirstOrDefault();
            }
            catch (Exception ex) { throw ex; }
        }

Как построить объект значения RG?

...