Compartir a través de


Entity Framework (SQL Server Compact)

Entity Framework es un conjunto de tecnologías de ADO.NET que admite el desarrollo de aplicaciones de software orientadas a datos. Entity Framework permite a los desarrolladores trabajar con datos en forma de objetos y propiedades específicos del dominio, como clientes y direcciones de cliente, sin tener que preocuparse de las tablas y las columnas de las bases de datos subyacentes donde se almacenan dichos datos.

Al posibilitar que los programadores trabajen con los datos en un nivel de abstracción mayor, Entity Framework admite código que es independiente de cualquier motor de almacenamiento de datos o esquema relacional determinados. Los programadores pueden crear las aplicaciones de acceso a datos programando con un modelo de aplicación conceptual en lugar de programar directamente con un esquema de almacenamiento relacional.

Las aplicaciones y servicios de Entity Framework están compuestos de un modelo conceptual, un modelo de almacenamiento y una asignación entre los dos. Para satisfacer las necesidades de los programadores que desean derivar un Entity Data Model (EDM) a partir de una base de datos existente, Entity Framework proporciona un conjunto de herramientas que generan y validan un EDM y crean las clases programables según el modelo conceptual.

A través del EDM, ADO.NET expone las entidades como objetos en el entorno .NET. Esto convierte al nivel de objetos en un destino ideal para usar Language-Integrated Query (LINQ). LINQ to Entities permite a los programadores crear consultas flexibles, con establecimiento inflexible de tipos, en el contexto de objetos de Entity Framework utilizando directamente las expresiones y los operadores de consulta estándar de LINQ desde el entorno de desarrollo. Para obtener más información sobre Entity Framework y LINQ to Entities, vea la documentación de Entity Framework.

SQL Server Compact 3.5 Service Pack 1 proporciona compatibilidad con Entity Framework para la plataforma Windows Desktop.

Entity Framework en SQL Server Compact

Para utilizar Entity Framework con SQL Server Compact, instale primero Entity Framework. Entity Framework es un componente de .NET Framework desde .NET Framework 3.5 Service Pack 1 (SP1).

Visual Studio ofrece a SQL Server Compact la capacidad de desarrollo. La compatibilidad de Entity Data Model Designer con Entity Framework en Visual Studio se proporciona con las herramientas de Entity Framework. Tenga en cuenta que Entity Data Model Designer (Entity Designer) es un componente de Visual Studio desde Visual Studio 2008 Service Pack 1 (SP1). Es una herramienta visual que se usa para crear y modificar un Entity Data Model (EDM). Para obtener más información acerca de esta herramienta, vea la documentación de Entity Framework.

Si desea utilizar Visual Studio 2008 en lugar de Visual Studio 2008 SP1, instale "Microsoft SQL Server Compact 3.5 SP1 Beta for Entity Framework Beta 3" que permite la integración entre Entity Designer y SQL Server Compact. Para obtener más información sobre cómo instalar la versión Beta, vea el Centro de descarga de Microsoft.

A partir del lanzamiento de SQL Server Compact 3.5 SP1, SQL Server Compact proporciona un ensamblado administrado: System.Data.SQLServerCe.Entity.dll. El proveedor de datos administrados de ADO.NET System.Data.SqlServerCE.dll usa internamente el ensamblado System.Data.SQLServerCe.Entity.dll y admite el acceso a datos que se describe en un Entity Data Model (EDM).

Al instalar la versión SP1 de SQL Server Compact 3.5 (SSCERuntime-ENU.msi), System.Data.SQLServerCe.Entity.dll se instala en la carpeta %ProgramFiles%\Microsoft SQL Server Compact Edition\v3.5.

Limitaciones de SQL Server Compact

Las siguientes son algunas limitaciones de SQL Server Compact cuando se utiliza con Entity Framework:

  • SQL Server Compact no admite las entidades con claves o valores generados por el servidor cuando se utiliza con Entity Framework.
    Al utilizar Entity Framework, las claves de una entidad se pueden marcar como si las hubiera generado el servidor. Esto permite a la base de datos generar un valor para la clave en la inserción o creación de la entidad. Además, como valores generados por el servidor pueden marcarse ninguna o varias propiedades de una entidad. Para obtener más información, vea el tema sobre el patrón generado en almacén de la documentación de Entity Framework.
    SQL Server Compact no admite entidades con claves o valores generados por el servidor cuando se utiliza con Entity Framework, aunque este permite definir tipos de entidad con estas claves o valores. La operación de manipulación de datos en una entidad que tiene valores generados por el servidor inicia una excepción "No admitido".

  • SQL Server Compact no admite las expresiones SKIP en las consultas de paginación cuando se utiliza con Entity Framework. Por otro lado, SQL Server Compact admite las expresiones LIMIT y TOP en las consultas de paginación.
    Las consultas de paginación están diseñadas para admitir la paginación sin estado (con desplazamiento o ventanas) a través de los resultados de una consulta.
    En el ejemplo siguiente se muestra cómo escribir una consulta de paginación en Entity Framework utilizando los operadores Take y LINQ Skip. Observe que SQL Server Compact no admite la expresión SKIP en una consulta de paginación:

    LINQ:

    customers.OrderBy(c => c.Name).Skip(10).Take(20) 
    

    En el ejemplo siguiente se muestra cómo escribir una consulta de paginación en Entity Framework utilizando las construcciones SKIP, LIMIT y TOP de Entity SQL. Observe que SQL Server Compact no admite la expresión SKIP en una consulta de paginación:

    Entity SQL:

    SELECT value c 
    FROM NW.Customers AS c 
    ORDER BY c.Name skip 10 limit 20; 
    
  • SQL Server Compact no admite las combinaciones externas completas que utilizan Entity Framework, aunque Entity SQL sí las admite. Por ejemplo, la consulta siguiente no se admite:

    Entity SQL:

    SELECT c.Name, c.Id, o.Id 
    FROM NW.Customers AS c 
    FULL OUTER JOIN NW.Orders AS o ON c.Id = o.CustomerId
    

    Observe que SQL Server Compact admite las combinaciones internas, las combinaciones externas izquierdas y las combinaciones externas derechas que utilizan Entity Framework.

  • SQL Server Compact no admite las subcláusulas COLLATE en la cláusula ORDER BY de una consulta de Entity SQL.
    Entity SQL permite especificar una subcláusula COLLATE como parte de cada clave en una cláusula ORDER BY. La subcláusula COLLATE sólo es aplicable para las expresiones con valor de cadena y determina la semántica de comparación que se utilizará para esa expresión.

    SQL Server Compact, cuando se utiliza con Entity Framework, no admite el uso de una subcláusula COLLATE en la cláusula ORDER BY de una consulta de Entity SQL. Por ejemplo, la consulta siguiente no se admite:

    Entity SQL:

    SELECT value c 
    FROM NW.Customers AS c 
    ORDER BY c.Name COLLATE Traditional_Spanish_ci_ai 
    
  • A diferencia de SQL Server, SQL Server Compact no admite las operaciones de módulo (denotadas mediante %) en los tipos de datos real, float, money y numeric.
    En SQL Server Compact, las consultas siguientes ocasionan un mensaje de error:

    Entity SQL:

    ( CAST ( 1 AS Edm.Int16) % CAST ( 1 AS Edm.Decimal) ) 
    

    Transact-SQL:

    SELECT cast (1 as smallint) %cast (1 as decimal(28,4)) 
    

    Al ejecutar este tipo de consulta, se mostrará un mensaje de error similar al siguiente: "El módulo no se admite en los tipos de datos numéricos, Real, Float y Money. [ Tipo de datos = numérico ]"

  • SQL Server Compact no admite DISTINCT en los agregados (max, min, sum, count).
    Si intenta escribir consultas de Entity SQL y Transact-SQL que usen DISTINCT en los agregados (max, min, sum, count), se iniciará una excepción "No se admite". En el ejemplo siguiente se muestra una consulta de Entity SQL que utiliza DISTINCT en el agregado count.

    Entity SQL:

    SELECT count(distinct [TaskId]) FROM ArubaContainer.TaskSet AS [Task]
    
  • SQL Server Compact no admite tiempos de espera de comandos cuando se utiliza con Entity Framework.
    Entity Framework habilita los tiempos de espera para los comandos que se van a especificar utilizando las propiedades ObjectContext.QueryTimeout o EntityCommand.CommandTimeout.
    SQL Server Compact no admite tiempos de espera cuando se utiliza con Entity Framework. En otras palabras, el tiempo de espera de comandos no se debe establecer en un valor distinto de cero. Si se establece una propiedad de tiempo de espera de conexión, la base de datos SQL Server Compact inicia una excepción NotSupportedException(“CommandTimeout”).

  • SQL Server Compact sólo admite las cadenas Unicode.
    Entity Framework proporciona compatibilidad tanto con las cadenas Unicode como con las cadenas no Unicode. SQL Server Compact solo admite las cadenas Unicode. El proveedor actual no admite el literal <literal> de tipo 'String'. SQL Server Compact inicia la excepción "cerca de un literal constante" en las cadenas no Unicode.

  • SQL Server Compact no admite las vistas ni los procedimientos almacenados.

Ejemplo

Para obtener información sobre cómo crear aplicaciones de Entity Framework que utilizan la base de datos de SQL Server Compact como un origen de datos, vea Crear una aplicación de Entity Framework (SQL Server Compact).

Vea también

Otros recursos

Generar aplicaciones administradas (SQL Server Compact)

Ayuda e información

Obtener ayuda (SQL Server Compact 3.5 Service Pack 1)