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.
|