Entity Framework
Entity Framework con SQLite
Buscar..
Introducción
SQLite es una base de datos SQL transaccional, autónoma, sin servidor. Se puede usar dentro de una aplicación .NET utilizando tanto una biblioteca de .NET SQLite disponible gratuitamente como el proveedor de Entity Framework SQLite. Este tema se centrará en la configuración y el uso del proveedor SQLite de Entity Framework.
Configuración de un proyecto para usar Entity Framework con un proveedor SQLite
La biblioteca de Entity Framework solo viene con un proveedor de SQL Server. Para usar SQLite se requerirán dependencias y configuraciones adicionales. Todas las dependencias requeridas están disponibles en NuGet.
Instalar bibliotecas administradas de SQLite
Todas las dependencias modificadas pueden instalarse utilizando la consola de NuGet Package Manager. Ejecute el comando Install-Package System.Data.SQLite
.
Como se muestra arriba, al instalar System.Data.SQLite
, todas las bibliotecas administradas relacionadas se instalan con él. Esto incluye System.Data.SQLite.EF6
, el proveedor de EF para SQLite. El proyecto ahora también hace referencia a los ensamblajes necesarios para usar el proveedor SQLite.
Incluyendo la biblioteca no administrada
Las bibliotecas administradas de SQLite dependen de un ensamblado no administrado llamado SQLite.Interop.dll
. Se incluye con los conjuntos de paquetes descargados con el paquete SQLite, y se copian automáticamente en el directorio de compilación cuando se genera el proyecto. Sin embargo, debido a que no está administrado, no se incluirá en su lista de referencia. Pero tenga en cuenta que este ensamblaje se distribuye con la aplicación para que funcionen los ensamblajes de SQLite.
Nota: este ensamblaje depende de los bits, lo que significa que deberá incluir un ensamblaje específico para cada bitness que planee admitir (x86 / x64).
Edición de la aplicación del proyecto.config
El archivo app.config
requerirá algunas modificaciones antes de que SQLite pueda usarse como proveedor de Entity Framework.
Arreglos requeridos
Al instalar el paquete, el archivo app.config
se actualiza automáticamente para incluir las entradas necesarias para SQLite y SQLite EF. Lamentablemente estas entradas contienen algunos errores. Deben ser modificados antes de que funcione correctamente.
Primero, ubique el elemento DbProviderFactories
en el archivo de configuración. Está dentro del elemento system.data
y contendrá lo siguiente
<DbProviderFactories>
<remove invariant="System.Data.SQLite.EF6" />
<add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6" />
<remove invariant="System.Data.SQLite" /><add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
Esto se puede simplificar para contener una sola entrada.
<DbProviderFactories>
<add name="SQLite Data Provider" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
</DbProviderFactories>
Con esto, hemos especificado que los proveedores de EF6 SQLite deben usar la fábrica de SQLite.
Añadir cadena de conexión SQLite
Las cadenas de conexión se pueden agregar al archivo de configuración dentro del elemento raíz. Agregue una cadena de conexión para acceder a una base de datos SQLite.
<connectionStrings>
<add name="TestContext" connectionString="data source=testdb.sqlite;initial catalog=Test;App=EntityFramework;" providerName="System.Data.SQLite.EF6"/>
</connectionStrings>
Lo importante a tener en cuenta aquí es el provider
. Se ha establecido en System.Data.SQLite.EF6
. Esto le dice a EF que cuando usamos esta cadena de conexión, queremos usar SQLite. El data source
especificado es solo un ejemplo y dependerá de la ubicación y el nombre de su base de datos SQLite.
Tu primer SQLb DbContext
Con toda la instalación y configuración completadas, ahora puede comenzar a usar un DbContext
que funcionará en su base de datos SQLite.
public class TestContext : DbContext
{
public TestContext()
: base("name=TestContext") { }
}
Al especificar name=TestContext
, he indicado que la cadena de conexión TestContext ubicada en el archivo app.config
debe usarse para crear el contexto. Esa cadena de conexión se configuró para usar SQLite, por lo que este contexto usará una base de datos SQLite.