miércoles, 27 de julio de 2011

Equivalencia de tipos SQL Server 2008 R2 en Entity Framework


Si hoy en día no utilizas ningún ORM es que no vives en este mundo. Por supuesto, yo NO vivo en este mundo, así que para declararme oficialmente ciudadano, hemos optado por utilizar ADO.NET Entity Framework. Auguro que el camino será largo y lleno de escollos que salvar, pero seguro que cuando lleguemos al final, todas nuestras aventuras no habrán sido en balde.

Para comenzar con EF, y puesto que aún estamos en periodo de aprendizaje, simplemente veremos la equivalencia de tipos que realiza EF entre los tipos disponibles en SQL Server Express 2008 R2 y los tipos .NET.

Recuerda que en este otro post, también tenemos las equivalencias entre los tipos de SQL y el proveedor de ADO.NET SqlClient (System.Data.SqlClient.SqlDbType) y también para la factoría de proveedores (System.Data.DbType).

Lo primero que necesitamos es una tabla con columnas para todos los tipos de datos disponibles en SQL.

CREATE TABLE [dbo].[development_DataTypes](

            [Cbigint] [bigint] NOT NULL,

            [Cbinary] [binary](50) NULL,

            [Cbit] [bit] NULL,

            [Cchar] [char](10) NULL,

            [Cdate] [date] NULL,

            [Cdatetime] [datetime] NULL,

            [Cdatetime2] [datetime2](7) NULL,

            [Cdatetimeoffset] [datetimeoffset](7) NULL,

            [Cdecimal] [decimal](18, 0) NULL,

            [Cfloat] [float] NULL,

            [Cgeography] [geography] NULL,

            [Cgeometry] [geometry] NULL,

            [Chierarchyid] [hierarchyid] NULL,

            [Cimage] [image] NULL,

            [Cint] [int] NULL,

            [Cmoney] [money] NULL,

            [Cnchar] [nchar](10) NULL,

            [Cntext] [ntext] NULL,

            [Cnumeric] [numeric](18, 0) NULL,

            [Cnvarchar] [nvarchar](50) NULL,

            [Cnvarcharmax] [nvarchar](max) NULL,

            [Creal] [real] NULL,

            [Csmalldatetime] [smalldatetime] NULL,

            [Csmallint] [smallint] NULL,

            [Csmallmoney] [smallmoney] NULL,

            [Csql_variant] [sql_variant] NULL,

            [Ctext] [text] NULL,

            [Ctime] [time](7) NULL,

            [Ctimestamp] [timestamp] NULL,

            [Ctinyint] [tinyint] NULL,

            [Cuniqueidentifier] [uniqueidentifier] NULL,

            [Cvarbinary] [varbinary](50) NULL,

            [Cvarbinarymax] [varbinary](max) NULL,

            [Cvarchar] [varchar](50) NULL,

            [Cvarcharmax] [varchar](max) NULL,

            [Cxml] [xml] NULL,

 CONSTRAINT [PK_development_DataTypes] PRIMARY KEY CLUSTERED

(

            [Cbigint] ASC

)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]

) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

 

A continuación, lo primero que observamos es que hay algunos tipos de SQL que no están admitidos por EF. Estos tipos son:

·         geograhpy

·         geometry

·         hierarchyid

·         sql_variant

clip_image002

Para el resto de tipos, aquí está la equivalencia:

SQL Server Express 2008 R2

.NET

bigint

Int64

binary

Binary

bit

Boolean

char

String

date

DateTime

datetime

DateTime

datetime2

DateTime

datetimeoffset

DateTimeOffSet

decimal

Decimal

float

Double

geography

N/A

geometry

N/A

hierarchyid

N/A

image

Binary

int

Int32

money

Decimal

nchar

String

ntext

String

numeric

Decimal

nvarchar

String

nvarchar(max)

String

real

Single

smalldatetime

DateTime

smallint

Int16

smallmoney

Decimal

sql_variant

N/A

text

String

time

Time

timestamp

Binary

tinyint

Byte

uniqueidentifer

Guid

varbinary

Binary

varbinary(max)

Binary

varchar

String

varchar(max)

String

xml

String

 

Un saludo!.

No hay comentarios:

Publicar un comentario