5
respostas

Erro ao rodar o Migration

Amigos boa noite, espero encontrar-lhes bem.

Estou seguindo o curo de C# que é muito bom, já aprendi muito. Por questões de necessidade eu tive que partir já para utilização de banco de dados. Estou usando PosgreSql e a versão 2022 do Visual Studio Licenciada. Segue um tutorial da web de como usar o EntityFrameWork 6 para conexão com banco de dados. Fiz toda as instalações de pacotes e atualização. Gerei o Migration mas na hora de rodar o update-database ele apresenta a mensagem "A parte da cadeia de caracteres da versão era muito curta ou muito longa."

aqui está o meu migration

public override void Up()
        {
            CreateTable(
                "public.Clientes",
                c => new
                    {
                        id_Cliente = c.Int(nullable: false, identity: true),
                        Nome = c.String(nullable: false, maxLength: 200),
                        token = c.String(nullable: false, maxLength: 200),
                        usuario = c.String(nullable: false, maxLength: 80),
                        senha = c.String(nullable: false, maxLength: 20),
                        status = c.Boolean(nullable: false),
                    })
                .PrimaryKey(t => t.id_Cliente);

        }

Minha classe

 public class Cliente
    {
        [Key]
        public int id_Cliente { get; set; }

        [MaxLength(200), Required]
        public string Nome { get; set; }

        [MaxLength(200), Required]
        public string token { get; set; }

        [MaxLength(80), Required]
        public string usuario { get; set; }

        [MaxLength(20), Required]
        public string senha { get; set; }

        [DefaultValue(1), Required]
        public bool status { get; set; }        

    }

connection string (suprimir os dados de conexão por segurança)

<add name="xxxxxxxxxxxxxx" providerName="xxxxx"
             connectionString="server=xxx.xxx.xx.xx;
                                port=xxxx;
                                database=xxxxxxx;
                                user id=banco;
                                password=xxxxxxxxxxxx"/>
    </connectionStrings>

O erro que está apresentando é "A parte da cadeia de caracteres da versão era muito curta ou muito longa"

Alguém pode me ajudar, por favor. Grato

5 respostas

Gustavo,

Por essa mensagem de erro, eu recomendo que você veja o tamanho das suas strings.

Exemplo: maxLength: 200 é o suficiente? Será que a origem é maior do que isto?

[]'s,

Fabio I.

Não se trata disso, ele não está nem deixando rodar o migration eu nem estou imputando dados no banco ainda estou tentando criar via migration.

Gustavo,

Mas você consegue se conectar ao Banco de Dados?

[]'s,

Fabio I.

Sim consigo

Gustavo,

Pesquisei sobre este erro e achei alguns links que talvez possa te ajudar.

Tem algumas dicas de configuração e um exemplo do Macoratti, mas usando VB.NET.

==========================================================

Documentação do PostgreSQL 7.4.1

Capítulo 8. Tipos de dado

8.3. Tipos para cadeias de caracteres

A Tabela 8-4 mostra os tipos de propósito geral para cadeias de caracteres disponíveis no PostgreSQL.

NomeDescrição
character varying(n), varchar(n)comprimento variável com limite
character(n), char(n)comprimento fixo, completado com brancos
textcomprimento variável não limitado

Nota: Antes do PostgreSQL 7.2 as cadeias de caracteres muito longas eram sempre truncadas sem gerar erro, tanto no contexto de conversão explícita quanto no de implícita. As notações varchar (n) e char (n) são sinônimos para character varying (n) e character (n), respectivamente.

A parte da cadeia de caracteres da versão era muito curta ou muito longa.

https://pgdocptbr.sourceforge.io/pg74/datatype-character.html#:~:text=Nota%3A%20Antes%20do%20PostgreSQL%207.2%20as%20cadeias%20de,para%20character%20varying%20%28n%29%20e%20character%20%28n%29%2C%20respectivamente.

==========================================================

Entity Framework 6 - Acessando o PostgreSQL - I (VB .NET)

https://macoratti.net/14/07/ef6_pgsql1.htm

==========================================================

PostgreSQL and Entity Framework 6 Code First

https://www.jasoncavett.com/blog/postgresql-and-entity-framework-6-code-first/

==========================================================

.NET 6.0 - Connect to PostgreSQL Database with Entity Framework Core

PUBLISHED: JUNE 23 2022

https://jasonwatmore.com/post/2022/06/23/net-6-connect-to-postgresql-database-with-entity-framework-core

==========================================================

How to Configure PostgreSQL in Entity Framework Core

Posted by Vladimir Pecanac | Updated Date Jan 13, 2022

https://code-maze.com/configure-postgresql-ef-core/

==========================================================

Entity Framework 6 / Getting Started

Basic Configuration

Config file

<configuration>
    <connectionStrings>
        <add name="BlogDbContext" connectionString="Server=localhost;port=5432;Database=Blog;User Id=postgres;Password=postgres;" providerName="Npgsql" />
    </connectionStrings>
    <entityFramework>
        <providers>
            <provider invariantName="Npgsql" type="Npgsql.NpgsqlServices, EntityFramework6.Npgsql" />
        </providers>
        <!-- setting the default connection factory is optional -->
        <defaultConnectionFactory type="Npgsql.NpgsqlConnectionFactory, EntityFramework6.Npgsql" />
    </entityFramework>
    <system.data>
        <DbProviderFactories>
            <add name="Npgsql Provider" invariant="Npgsql" description=".NET Framework Data Provider for PostgreSQL" type="Npgsql.NpgsqlFactory, Npgsql, Version=4.1.3.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7" />
        </DbProviderFactories>
    </system.data>
</configuration>

https://www.npgsql.org/ef6/index.html

==========================================================

[]'s,

Fabio I.