Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 30236|Respuesta: 1

[Fuente] EF establece el Id de clave primaria al tipo de autocrecimiento de los guid

[Copiar enlace]
Publicado en 4/11/2016 13:27:38 | | | |


El código de entidad de la entidad es el siguiente:



El código de inserción es el siguiente:



Solo establecemos el valor de name y no asignamos un valor a id, veamos qué es la sentencia SQL generada??? , de la siguiente manera:

exec: sp_executesql N'DECLARE @generated_keys table([Id] identificador único)
INSERTAR [dbo]. [TestTab] ([Nombre])
SALIDA insertada. [Id] HACIA @generated_keys
VALORES (@0)
SELECT t.[Id]
DESDE @generated_keys COMO G JOIN [dbo]. [TestTab] COMO t SOBRE g.[Id] = t.[Id]
DONDE @@ROWCOUNT > 0',N'@0 nvarchar(32)', @0=N' arquitectowww.itsvse.com'


Descubrimos que la tabla INSERT TestTab solo inserta el campo Nombre, ¿tiene Id un valor predeterminado??? Hemos encontrado que

ef me ha ayudado a establecer el tipo de valor predeterminado de la clave primaria Id, el valor por defecto o la vinculación "(newsequentialid())", y ha utilizado la función newsequentialid(), que se introduce de la siguiente manera:


1.:La mayor ventaja de la función newsequentialid sobre la función newid es que si creas un índice en un campo UNIQUEIDENTIFIQUED, el nuevo valor generado usando newid no es fijo, por lo que el nuevo valor hace que el cambio en el árbol del índice B+ sea aleatorio. Si el nuevo valor producido por la newsequentialid es regular, entonces el cambio del árbol del índice B+ es regular. La regularidad y la irregularidad conducen a mejoras en el rendimiento.

2: UNIQUEIDENTIFIER es algo muy conveniente de hacer como clave primaria, lo que tiene ventajas insustituibles en operaciones como la fusión de datos
Sin embargo, debido a la descentralización de los GUIDs ordinarios, si la clave primaria se añade a un índice agrupado, será mucho menos eficiente al insertar registros

SQL SERVER 2005 añade una nueva función llamada NEWSEQUENTIALID, que MSDN explica:
Crea un GUID en la máquina especificada que sea mayor que cualquier GUID generado previamente por la función.
NEWSEQUENTIALID() no puede ser referenciado en la consulta.
Nota: Esto significa que solo puede usarse como el VALOR PREDETERMINADO de una columna de base de datos y no puede ejecutar sentencias como SELECT NEWSEQUENTIALID().
El GUID generado por NEWSEQUENTIALID() es único en ese ordenador en particular solo si el ordenador no dispone de tarjeta de red.
Nota: Esta frase es incorrecta, debería ser que solo cuando el ordenador tiene una tarjeta de red, el GUID generado es único en el mundo
Puedes usar NEWSEQUENTIALID() para generar un GUID que reduzca la contención de páginas en el índice a nivel hoja.





Anterior:La pestaña de control de EasyUI añade una función de alternancia
Próximo:c#/.Net colección capa por valor de matriz
Publicado en 1/2/2018 10:43:26 |
¡Sí, gracias! ¡Las habilidades del casero son muy difíciles! Duro
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com