Saltar al contenido

SQLite en ASP.NET Core con EntityFrameworkCore

Después de investigar con especialistas en la materia, programadores de deferentes áreas y maestros hemos dado con la respuesta a la pregunta y la plasmamos en este post.

Solución:

Actualización: 4 de noviembre de 2016.

Reformateo: imágenes para codificar ejemplos.
Información: Tenga en cuenta que en algunos ejemplos de código, se ha omitido el código generado por la plantilla de Visual Studio.

Actualización: 11 de julio de 2016.

¡.NET Core y EntityFrameWork Core versión 1.0 están sobre nosotros!
Entonces esta guía merece una pequeña actualización

Paso 1:

Crea tu aplicación.
ingrese la descripción de la imagen aquí

Paso 2:

Obtenga los paquetes necesarios
Microsoft.EntityFrameworkCore 1.0.0
Microsoft.EntityFrameworkCore.SQlite 1.0.0

Paso 3:

Crea tu contexto:
(El contexto será una clase que tú crees)

public class DatabaseContext : DbContext

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    
        optionsBuilder.UseSqlite("Filename=MyDatabase.db");
    

Paso 4:

Agregue su contexto a sus servicios:
(Ubicado en su clase de inicio)

public void ConfigureServices(IServiceCollection services)

    services.AddEntityFrameworkSqlite().AddDbContext();

Paso 5:

Cree su base de datos al inicio, agregándola al método de inicio
(Ubicado en la clase Startup)

public Startup(IHostingEnvironment env)

    using(var client = new DatabaseContext())
    
        client.Database.EnsureCreated();
    

Et Voíla!
Ahora podrá utilizar SQLite en sus aplicaciones ASP.NET Core.
La guía anterior todavía se aplica con respecto a cómo crea sus modelos, así como al uso de su contexto de base de datos.


Actualización: 28 de mayo de 2016.

Se lanzaron .NET Core RC2 y EntityFramework Core RC1.
Han mejorado y simplificado los pasos para configurar SQLite.
Pero estoy experimentando algunos problemas con él y no puedo replicarlo, debido a un error con la biblioteca Newtonsoft.Json y NuGet.

¡Te recomiendo que te ciñas a las bibliotecas RC1 si quieres hacer esto, por ahora!


Paso 1:

Cree su aplicación web ASP.NET

ASP.NET5WebApp

Paso 2:

Vaya a Herramientas -> Administrador de paquetes Nuget -> Administrar paquetes Nuget para la solución.
Buscar EntityFramework.SQLite y revisa el Include prelease caja.
Instalar el paquete

NugetEF7Sqlite

Paso 3: crear un contexto

Cree una clase de contexto para su base de datos.
Llámelo como quiera, pero vayamos con algo que sea habitual, como MyDbContext. Haga que su nueva clase herede la clase DbContext y anule el método OnConfiguring y defina su conexión así:

public class MyDbContext : DbContext

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    
        var connectionStringBuilder = new SqliteConnectionStringBuilder  DataSource = "MyDb.db" ;
        var connectionString = connectionStringBuilder.ToString();
        var connection = new SqliteConnection(connectionString);

        optionsBuilder.UseSqlite(connection);
    

Paso 4:

Ve a la Startup.cs y asegúrese de que su base de datos se cree al inicio de su aplicación web:

public Startup(IHostingEnvironment env)
    
        // Set up configuration sources.
        var builder = new ConfigurationBuilder()
            .AddJsonFile("appsettings.json")
            .AddJsonFile($"appsettings.env.EnvironmentName.json", optional: true);         


        using (var db = new MyDbContext())
        
            db.Database.EnsureCreated();
            db.Database.Migrate();
        

    

En segundo lugar, debemos agregar el servicio:

public void ConfigureServices(IServiceCollection services)
    
        // Add framework services.
        services.AddMvc();

        services.AddEntityFramework()
        .AddSqlite()
        .AddDbContext();
    

Paso 5: Definición de sus modelos

Crea tus modelos y ve a MyDbContext.cs y agregue una nueva propiedad para cada uno de sus nuevos modelos (¡dado que desea una tabla para cada uno!)
He aquí un ejemplo:
Mi modelo:

public class Category

    public int Id  get; set; 

    public string Title  get; set; 

    public string Description  get; set; 

    public string UrlSlug  get; set; 

Agregándolo a mi contexto:

public class MyDbContext : DbContext

    public DbSet Categories  get; set; 

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    
        var connectionStringBuilder = new SqliteConnectionStringBuilder  DataSource = "MyDb.db" ;
        var connectionString = connectionStringBuilder.ToString();
        var connection = new SqliteConnection(connectionString);

        optionsBuilder.UseSqlite(connection);
    

Paso 6: usar el contexto

Vaya a su HomeController y agregue un nuevo campo a su controlador.
private readonly MyDbContext _myDbContext = new MyDbContext();

Y utilícelo en un ActionResult pasándolo a la vista devuelta:
(Ahora supongamos que tenemos una categoría en nuestra base de datos)

public IActionResult Index()

    var category = _myDbContext.Categories.First();
    return View(category);

Entonces, yendo a su vista de Índice, puede usar nuestros datos imaginarios de la base de datos. Al definir un modelo en la parte superior de su vista así:

@model  MyNameSpace.Models.Category
@
   ViewData["Title"] = "Hey Ho! SO!";





@Model.Title

Ahora, al iniciar nuestra aplicación web e ir a la dirección asignada, deberíamos ver una página html predeterminada con un elegante encabezado de arranque, que muestra esto en la página:
Página web

La segunda línea es (o sería) el título de nuestra primera categoría en nuestra base de datos.

Documentos de Entity Framework 7

Esta es mi primera sesión de preguntas y respuestas; si tiene algún comentario o algo que necesite aclarar, no dude en comentarlo.
Este es un ejemplo muy básico de cómo implementar una base de datos SQLite en una aplicación web ASP.NET Core MVC.
Tenga en cuenta que hay varias formas de establecer la conexión string para la base de datos, cómo usar el contexto y que EntityFramework 7 sigue siendo una versión preliminar

Si desea crear una aplicación web ASP.NET Core utilizando SQLite para la base de datos, le recomiendo encarecidamente que utilice Yeoman para diseñar la aplicación por usted. Primero debe instalar .NET Core 1.1 SDK (Visual Studio 2015 parece incluir solo las versiones 1.0.0 y 1.0.1 del SDK en este momento). Luego debe instalar Node.js que viene con npm y luego instalar los siguientes paquetes npm: yo y generator-aspnet. Entonces todo lo que tienes que hacer es correr yo aspnet y responda algunas preguntas.

C:Development>yo aspnet
? ==========================================================================
We're constantly looking for ways to make yo better!
May we anonymously report usage statistics to improve the tool over time?
More info: https://github.com/yeoman/insight & http://yeoman.io
========================================================================== Yes

     _-----_     ╭──────────────────────────╮
    |       |    │      Welcome to the      │
    |--(o)--|    │  marvellous ASP.NET Core │
   `---------´   │        generator!        │
    ( _´U`_ )    ╰──────────────────────────╯
    /___A___   /
     |  ~  |
   __'.___.'__
 ´   `  |° ´ Y `

? What type of application do you want to create? Web Application
? Which UI framework would you like to use? Bootstrap (3.3.6)
? What's the name of your ASP.NET application? WebApplication

Posteriormente, obtendrá la siguiente respuesta:

 Your project is now created, you can use the following commands to get going
    cd "WebApplication"
    dotnet restore
    dotnet build (optional, build will also happen when it's run)
    dotnet ef database update (to create the SQLite database for the project)
    dotnet run

Correr dotnet restore, dotnet ef database update, y luego dotnet run E ir a localhost:5000 para asegurarse de que el proyecto se esté ejecutando.

Ahora puede abrir el proyecto en Visual Studio 2015 (suponiendo que esté en Windows) o Visual Studio Code.

Aplicación web ASP.NET Core generada con Yeoman

Lo bueno de esto es que Startup.cs, project.json, y appsettings.json Los archivos están configurados para usar SQLite. Además, se crea una base de datos SQLite para usted:

Startup.cs:

public void ConfigureServices(IServiceCollection services)

    // Add framework services.
    services.AddDbContext(options =>
        options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));

project.json:


    "Microsoft.EntityFrameworkCore.Sqlite": "1.1.0",
    "Microsoft.EntityFrameworkCore.Sqlite.Design": 
      "version": "1.1.0",
      "type": "build"
    

appsettings.json


  "ConnectionStrings": 
    "DefaultConnection": "Data Source=WebApplication.db"
  

Su base de datos SQLite se ubicará en bin/Debug/netcoreapp1.0. En mi caso, se encuentra en C:DevelopmentWebApplicationbinDebugnetcoreapp1.0WebApplication.db

Si desea cambiar el nombre de la base de datos SQLite, modifique appsettings.json archivar y ejecutar dotnet ef database update.

Para obtener más información sobre el uso de la base de datos SQLite con .NET Core y EF Core, consulte este artículo: .NET Core – Nueva base de datos

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *