Documente Academic
Documente Profesional
Documente Cultură
Matrcula: 28085468
Asignacin de enumeracin
LINQ to SQL admite la asignacin del tipo System.Enum de CLR a tipos de SQL Server de dos maneras: Asignacin a tipos SQL numricos (TINYINT, SMALLINT, INT, BIGINT) Al asignar un tipo System.Enum de CLR a un tipo numrico de SQL, el valor entero subyacente del tipo System.Enum de CLR se asigna al valor de la columna de base de datos de SQL Server. Por ejemplo, si un elemento System.Enum denominado DaysOfWeek contiene un miembro denominado Tue con un valor entero subyacente de 3, ese miembro se asigna a un valor de base de datos de 3. Asignacin a tipos SQL de texto (CHAR, NCHAR, VARCHAR, NVARCHAR) Al asignar un tipo System.Enum de CLR a un tipo de texto de SQL, el valor de la base de datos SQL se asigna a los nombres de los miembros System.Enum de CLR. Por ejemplo, si un tipoSystem.Enum denominado DaysOfWeek contiene un miembro denominado Tue con un valor entero subyacente de 3, ese miembro se asigna a un valor de base de datos de Tue.
Nota
Cuando los tipos de texto de SQL se asignan a System.Enum de CLR, solo se incluyen los nombres de los mie valores en la columna de SQL asignada a Enum.
Object Relational Designer y la herramienta de lnea de comandos SQLMetal no pueden asignar automticamente un tipo SQL a una clase Enum de CLR. Debe configurar explcitamente esta asignacin personalizando un archivo DBML para que lo usen Object Relational Designer y SQLMetal. Para obtener ms informacin sobre la asignacin de tipos personalizada, vea Asignaciones de tipos SQL-CLR personalizadas (LINQ to SQL). Puesto que una columna SQL de enumeracin tendr el mismo tipo que el resto de las columnas numricas y de texto; estas herramientas no reconocern el intento y la asignacin se realizar de forma predeterminada tal y como se describe en las siguientes secciones Asignacin numrica y Asignacin de texto y XML. Para obtener ms informacin sobre el cdigo generador con el archivo DBML, veaGeneracin de cdigo en LINQ to SQL. El mtodo DataContext.CreateDatabase crea una columna de SQL de tipo numrico para asignar un tipo System.Enum de CLR.
Asignacin numrica
LINQ to SQL permite asignar muchos tipos numricos de CLR y SQL Server. En la tabla siguiente se muestran los tipos de CLR que Object Relational Designer y SQLMetal seleccionan al crear un modelo de objetos o un archivo de asignacin externo de acuerdo con la base de datos.
REAL/FLOAT(24) FLOAT/FLOAT(53)
System.Single System.Double
En la tabla siguiente se muestran las asignaciones de tipos predeterminadas que el mtodo DataContext.CreateDatabase utiliza para definir qu tipo de columnas de SQL se deben crear para asignarlas a los tipos de CLR definidos en el modelo de objetos o en el archivo de asignacin externo.
Tipo CLR
System.Boolean System.Byte System.Int16 System.Int32 System.Int64 System.SByte System.UInt16 System.UInt32 System.UInt64 System.Decimal System.Single System.Double
Hay muchas otras asignaciones de tipos numricos entre las que puede elegir, pero algunas pueden tener como resultado excepciones de desbordamiento o de prdida de datos mientras se trasladan a la base de datos o desde ella. Para obtener ms informacin, vea Matriz de comportamiento de la asignacin de tipos en tiempo de ejecucin.
En la tabla siguiente se muestran las asignaciones de tipos predeterminadas que el mtodo DataContext.CreateDatabase utiliza para definir qu tipo de columnas de SQL se deben crear para asignarlas a los tipos de CLR definidos en el modelo de objetos o en el archivo de asignacin externo.
Tipo CLR
System.Char System.String System.Char[]
NVARCHAR(MAX)
Hay muchas otras asignaciones de XML y basadas en texto entre las que puede elegir, pero algunas pueden tener como resultado excepciones de desbordamiento o de prdida de datos mientras se trasladan a o desde la base de datos. Para obtener ms informacin, vea Matriz de comportamiento de la asignacin de tipos en tiempo de ejecucin.
Tipos XML
El tipo de datos XML de SQL Server est disponible a partir de Microsoft SQL Server 2005. Puede asignar el tipo de datos XML de SQL Server a XElement, XDocument o String. Si la columna almacena fragmentos XML que no se pueden leer en XElement, dicha columna debe asignarse a String para evitar errores en tiempo de ejecucin. Entre los fragmentos XML que se deben asignar a String se incluyen los siguientes: Una secuencia de elementos XML Atributos Identificadores pblicos (PI) Comentarios
Aunque puede asignar XElement y XDocument a SQL Server como se muestra en Matriz de comportamiento de la asignacin de tipos en tiempo de ejecucin, el mtodo DataContext.CreateDatabase no dispone de ninguna asignacin predeterminada de tipos de SQL Server para estos tipos.
Tipos personalizados
Si una clase implementa Parse() y ToString(), el objeto se puede asignar a cualquier tipo de texto de SQL (CHAR, NCHAR, VARCHAR, NVARCHAR, TEXT, NTEXT, XML). El objeto se almacena en la base de datos enviando el valor devuelto por ToString() a la columna de base de datos asignada. El objeto se reconstruye invocando a Parse() en la cadena devuelta por la base de datos.
Nota
LINQ to SQL no admite la serializacin mediante System.Xml.Serialization.IXmlSerializable.
En la tabla siguiente se muestran las asignaciones de tipos predeterminadas que el mtodo DataContext.CreateDatabase utiliza para definir qu tipo de columnas de SQL se deben crear para asignarlas a los tipos de CLR definidos en el modelo de objetos o en el archivo de asignacin externo.
Tipo CLR
System.DateTime System.DateTimeOffset System.TimeSpan
Hay muchas otras asignaciones de fecha y hora entre las que puede elegir, pero algunas pueden tener como resultado excepciones de desbordamiento o de prdida de datos mientras se trasladan a o desde la base de datos. Para obtener ms informacin, vea Matriz de comportamiento de la asignacin de tipos en tiempo de ejecucin.
Nota
Los tipos de SQL Server DATETIME2, DATETIMEOFFSET, DATE y TIME estn disponibles a partir de estos tipos nuevos a partir del Service Pack 1 de .NET Framework 3.5.
System.Datetime
El intervalo y la precisin del tipo System.DateTime de CLR son mayores que el intervalo y la precisin del tipo DATETIME de SQL Server, que es la asignacin de tipos predeterminada para el mtodoDataContext.CreateDatabase. Para evitar las excepciones relacionadas con los datos que estn fuera del intervalo de DATETIME, utilice DATETIME2, que est disponible a partir de Microsoft SQL Server 2008. DATETIME2 puede alcanzar la precisin y el intervalo del tipo System.DateTime de CLR.
System.TimeSpan
Microsoft SQL Server 2008 y .NET Framework 3.5 SP1 permiten asignar el tipo System.TimeSpan de CLR al tipo TIME de SQL Server. Sin embargo, existe una gran diferencia entre el intervalo que admite el tipo System.TimeSpan de CLR y el que admite el tipo TIME de SQL Server. La asignacin de valores menores que 0 horas o mayores que 23:59:59.9999999 horas al tipo TIME de SQL producir excepciones de desbordamiento. Para obtener ms informacin, vea System.TimeSpan (mtodos - LINQ to SQL). En Microsoft SQL Server 2000 y SQL Server 2005, no se pueden asignar campos de base de datos a TimeSpan. Sin embargo, se admiten las operaciones en TimeSpan porque se pueden devolver valoresTimeSpan a partir de la sustraccin de DateTime o se pueden incluir en una expresin como una variable literal o una variable enlazada.
Asignacin binaria
Hay muchos tipos de SQL Server que se pueden asignar al tipo System.Data.Linq.Binary de CLR. En la tabla siguiente se muestran los tipos de SQL Server que provocan que Object Relational Designer y SQLMetal definan un tipo System.Data.Linq.Binary de CLR al crear un modelo de objetos o un archivo de asignacin externo de acuerdo con la base de datos.
En la tabla siguiente se muestran las asignaciones de tipos predeterminadas que el mtodo DataContext.CreateDatabase utiliza para definir qu tipo de columnas de SQL se deben
Tipo CLR
System.Data.Linq.Binary System.Byte System.Runtime.Serialization.ISerializable
Hay muchas otras asignaciones binarias entre las que puede elegir, pero algunas pueden tener como resultado excepciones de desbordamiento o de prdida de datos mientras se trasladan a o desde la base de datos. Para obtener ms informacin, vea Matriz de comportamiento de la asignacin de tipos en tiempo de ejecucin.
Serializacin binaria
Si una clase implementa la interfaz ISerializable, se puede serializar un objeto en cualquier campo binario de SQL (BINARY, VARBINARY, IMAGE). El objeto se serializa o deserializa de acuerdo con la forma en que se haya implementado la interfaz ISerializable. Para obtener ms informacin, vea Serializacin binaria.
Asignaciones varias
En la tabla siguiente se muestran las asignaciones de tipos predeterminadas para varios tipos que an no se han mencionado. En la tabla siguiente se muestran los tipos de CLR que Object Relational Designer y SQLMetal seleccionan al crear un modelo de objetos o un archivo de asignacin externo de acuerdo con la base de datos.
SQL_VARIANT
System.Object
En la tabla siguiente se muestran las asignaciones de tipos predeterminadas que el mtodo DataContext.CreateDatabase utiliza para definir qu tipo de columnas de SQL se deben crear para asignarlas a los tipos de CLR definidos en el modelo de objetos o en el archivo de asignacin externo.
Tipo CLR
System.Guid System.Object
LINQ to SQL no admite ninguna otra asignacin de tipos para estos tipos varios.