Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 30236|Resposta: 1

[Fonte] EF define o Id da chave primária para o tipo de auto-crescimento dos GUID

[Copiar link]
Publicado em 04/11/2016 13:27:38 | | | |


O código da entidade é o seguinte:



O código de inserção é o seguinte:



Nós só definimos o valor do nome e não atribuímos valor ao id, vamos dar uma olhada no que é a instrução SQL gerada??? , da seguinte forma:

exec: sp_executesql N'DECLARE @generated_keys table([Id] uniqueidentifier)
INSERIR [dbo]. [TestTab] ([Nome])
SAÍDA inserida. [Id] PARA @generated_keys
VALORES (@0)
SELECT t.[Id]
DE @generated_keys COMO G JOIN [dbo]. [TestTab] AS t ON g.[Id] = t.[Id]
ONDE @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arquitetowww.itsvse.com'


Descobrimos que a tabela INSERT TestTab insere apenas o campo Nome, o Id tem um valor padrão??? Descobrimos que

ef me ajudou a definir o tipo padrão de valor da chave primária Id, o valor padrão ou vinculação "(newsequentialid())", e usou a função newsequentialid(), que é introduzida da seguinte forma:


1.:A maior vantagem da função newsequentialid em relação à função newid é que, se você criar um índice em um campo UNIQUEIDENTIFIER, o novo valor gerado usando newid não é fixo, então o novo valor faz com que a mudança na árvore B+ do índice seja aleatória. Se o novo valor produzido pelo newsequentialid for regular, então a mudança da árvore de índice B+ é regular. Regularidade e irregularidade levam a melhorias no desempenho.

2: UNIQUEIDENTIFIER é algo muito conveniente de se fazer como chave primária, o que tem vantagens insubstituívelmente em operações como a fusão de dados
No entanto, devido à descentralização dos GUIDs comuns, se a chave primária for adicionada a um índice agrupado, ela será muito menos eficiente ao inserir registros

SQL SERVER 2005 adiciona uma nova função chamada NEWSEQUENTIALID, que o MSDN explica:
Crie um GUID na máquina especificada que seja maior do que qualquer GUID gerado anteriormente pela função.
NEWSEQUENTIALID() não pode ser referenciado na consulta.
Nota: Isso significa que ele só pode ser usado como o VALOR PADRÃO de uma coluna de banco de dados, e não pode executar instruções como SELECT NEWSEQUENTIALID().
O GUID gerado pelo NEWSEQUENTIALID() é único nesse computador específico somente se o computador não possuir uma placa de rede.
Nota: Esta frase está errada, deveria ser que somente quando o computador tem uma placa de rede, o GUID gerado é único no mundo
Você pode usar o NEWSEQUENTIALID() para gerar um GUID e reduzir a contenda de página no índice em nível de folha.





Anterior:A Aba de Controle do EasyUI adiciona uma função de alternância
Próximo:c#/.Net coleção camada por valor de array
Publicado em 01/02/2018 10:43:26 |
Sim, obrigado! As habilidades do proprietário são muito difíceis! Difícil
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com