Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Guid ao invés de int

Tentei alterar o tipo do Id para Guid, porém ao tentar fazer o Update-Database, ele reclama sobre este tipo Guid, informando que só pode ser do tipo número inteiro.

Como poderia ser feito essa entidade com chave primaria do tipo uniqueidentifier (Guid em SQL Server)?

2 respostas
solução!

Oi Fernando,

Vi uma solução aqui que pode te atender: http://stackoverflow.com/questions/31926542/code-first-migration-from-int-to-guid-primary-key-issue

O cara descreve que coloca um SQL nos métodos Up e Down da classe de migração que dropa a coluna com o tipo int e cria uma nova como guid.

Abraço!

Obrigado pela dica Joviane, isso resolve quando se quer alterar o tipo.

Eu tinha achado ontem como fazer do início, sem ter a tabela criada, para quem interessar: https://stackoverflow.com/questions/18200817/how-to-set-newid-for-guid-in-entity-framework/21880183#21880183

    public class Teste
    {
        [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }

        public String Nome { get; set; }
    }
        public override void Up()
        {
            CreateTable(
                "dbo.Testes",
                c => new
                    {
                        Id = c.Guid(nullable: false, identity: true, defaultValueSql: "newsequentialid()"),
                        Nome = c.String(),
                    })
                .PrimaryKey(t => t.Id);

        }

        public override void Down()
        {
            DropTable("dbo.Testes");
        }

"defaultValueSql: 'newsequentialid()'" não é obrigatório, mas deixa explicito que é para usar a função que gera guid's de maneira mais eficiente (insert, select etc).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software