c# - dotnet - SQLite en ASP.NET Core con EntityFrameworkCore
validation net core (2)
Si desea crear una aplicación web ASP.NET Core utilizando SQLite para la base de datos, le recomiendo usar Yeoman para establecer 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 de SDK en este momento). Luego necesita instalar Node.js que viene con npm y luego instalar los siguientes paquetes npm: yo y generator-aspnet . Luego, todo lo que tiene que hacer es ejecutar yo aspnet
y responder 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
Luego, obtendrás 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
Ejecute dotnet restore
, dotnet ef database update
, y luego dotnet run
y vaya 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 en Visual Studio Code.
Lo mejor de esto es que los archivos Startup.cs
, project.json
y appsettings.json
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<ApplicationDbContext>(options =>
options.UseSqlite(Configuration.GetConnectionString("DefaultConnection")));
}
proyecto.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:/Development/WebApplication/bin/Debug/netcoreapp1.0/WebApplication.db
Si desea cambiar el nombre de la base de datos SQLite, modifique el archivo appsettings.json
y ejecute la dotnet ef database update
la base de datos appsettings.json
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
¿Cómo agregar y usar una base de datos SQLite en una aplicación web ASP.NET Core, utilizando EntityFramework 7?
Me sumergí en ASP.NET Core en el momento en que lo supe y creé mi primera aplicación web, de repente tuve un montón de datos que quería almacenar y SQLite parecía la opción obvia.
Como quería que se mantuviera con mi aplicación, manténgala liviana, simple y evite configurar una base de datos separada.
Entonces, ¿cómo se podría hacer para crear una base de datos SQLite en ASP.NET Core?
- ASP.NET Core - ahora conocido anteriormente como ASP.NET MVC 6
- EntityFramework Core: ahora conocido anteriormente como EntityFramework 7
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 ya están aquí!
Así que esta guía merece una pequeña actualización.
Paso 2:
Consigue 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 creas)
public class DatabaseContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=MyDatabase.db");
}
}
Etapa 4:
Agregue su contexto a sus servicios:
(Ubicado en tu clase de inicio)
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
}
Paso 5:
Cree su base de datos en el inicio, agregándola al método de inicio
(Ubicado en la clase de inicio)
public Startup(IHostingEnvironment env)
{
using(var client = new DatabaseContext())
{
client.Database.EnsureCreated();
}
}
Et Voíla!
Ahora podrá utilizar SQLite en sus aplicaciones Core de ASP.NET.
La guía anterior aún se aplica con respecto a cómo crea sus modelos y al uso del contexto de su base de datos.
Actualización: 28 de mayo de 2016.
Se han lanzado .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.
Recomiendo apegarse a las bibliotecas RC1 si quiere hacer esto, ¡por ahora!
Paso 1:
Crea tu aplicación web ASP.NET
Paso 2:
Vaya a Herramientas -> Nuget Packet Manager -> Administrar paquetes de Nuget para la solución.
Busque EntityFramework.SQLite
y marque la casilla Include prelease
.
Instala el paquete
Paso 3: Creando un contexto
Crea una clase de contexto para tu base de datos.
Llámalo como quieras, pero vamos con algo que sea personalizado, como MyDbContext
. Haga que su nueva clase herede la clase DbContext, anule el método OnConfiguring y defina su conexión de la siguiente manera:
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);
}
}
Etapa 4:
Vaya a 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 tenemos que añadir el servicio:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddEntityFramework()
.AddSqlite()
.AddDbContext<MyDbContext>();
}
Paso 5: Definiendo tus modelos
Cree sus modelos y vaya a MyDbContext.cs
y agregue una nueva propiedad para cada uno de sus nuevos modelos (¡dado que desea una tabla para cada uno!)
Aquí hay 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; }
}
Añadiéndolo a mi contexto:
public class MyDbContext : DbContext
{
public DbSet<Category> 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: Usando 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 asumamos que tenemos una categoría en nuestra base de datos)
public IActionResult Index()
{
var category = _myDbContext.Categories.First();
return View(category);
}
Entonces, al ir a su vista de índice, puede utilizar nuestros datos imaginarios de la base de datos. Al definir un modelo en la parte superior de su vista de la siguiente manera:
@model MyNameSpace.Models.Category
@{
ViewData["Title"] = "Hey Ho! SO!";
}
<div class="page-header">
<h1>@ViewData["Title"]</h1>
</div>
<div class="container">
@Model.Title
</div>
Ahora, al iniciar nuestra aplicación web e ir a la dirección asignada, deberíamos ver una página html predeterminada con un encabezado bootstrap sofisticado, que muestra esto en la página:
La segunda línea es (o sería) el título de nuestra primera categoría en nuestra base de datos.
Esta es mi primera sesión de preguntas y respuestas: si tiene algún comentario o algo que necesite aclaración, no dude en comentar.
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 cadena de conexión para la base de datos, cómo usar el contexto y que EntityFramework 7 sigue siendo una versión preliminar.