Duvida sobre a geração de Id #41
-
Salve Balta, beleza? Bem, eu tava aqui fazendo o curso de Dapper, quando cheguei na parte onde a gente tava criando o resto das funções do CRUD para o UserRepository. Ai fomos refatorar a função Create, e na criação dela, você instanciou o user.Id como 0. Porém, foi muito confuso pra mim, pois eu acreditava que o IDENTITY SEED cuidava dessa parada de instanciar um Id de forma automática e sem geração de conflitos. Abaixo segue o código. (releva que eu acabei usando o role como exemplo kkkk, mas o código é o mesmo) A minha dúvida mesmo, é o porquê de instanciar esse 0 na hora do Create? Na real minha duvida ficou maior pelo o que veio a seguir. Na hora de criamos o Update e Delete (código abaixo), comparamos o user.Id para ver se ele é diferente de 0. Porém no Create assemelhamos o Id a 0. Na hora de executar um Create, ele vai forçar o Id a ser 0 de primeira? Se for assim, ok. Mas na segunda vez que formos usar o Create, ele vai forçar novamente a Id a ser 0? E isso não geraria um conflito? E porquê especificamente em Update e Delete verificar se a Id é diferente de 0? Desde já, valeuzão pela resposta <3 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 1 reply
-
@richallyson boa tarde... o Então meio que tanto faz você especificar ou não ali no Porém, quando este zero chega no banco, ele entende que você "não quis informar" uma chave e vai gerar uma, baseado nos Ids anteriores, usando a incrementação que você escolheu. (Ver aula sobre Identity Seed do curso de SQL Server) Em relação ao Pegou? 💜 |
Beta Was this translation helpful? Give feedback.
@richallyson boa tarde... o
0
no Id depende do banco e da forma como você está armazenando as chaves primárias.Se você não informar nada, o Id já vai ser
0
, pois o tipo de valorint
no .NET assume0
como valor padrão, visto que não podem ser nulos. (Ver aula sobre valor padrão dos tipos do curso de Fundamentos de C#)Então meio que tanto faz você especificar ou não ali no
Create
...Porém, quando este zero chega no banco, ele entende que você "não quis informar" uma chave e vai gerar uma, baseado nos Ids anteriores, usando a incrementação que você escolheu. (Ver aula sobre Identity Seed do curso de SQL Server)
Em relação ao
Delete
eUpdate
este comportamente precisa ser diferente. Não pod…