EntityFramework 7を使用して、ASP.NET Core WebアプリケーションでSQLiteデータベースを追加および使用するにはどうすればよいですか?
ASP.NET Coreについて聞いて、最初のWebアプリケーションを作成した瞬間に、突然格納したいデータがたくさんあり、SQLiteが当然の選択のように思えました。
アプリケーションにそのまま残したかったので、軽量でシンプルな状態に保ち、別のデータベースをセットアップしないでください。
では、ASP.NET CoreでSQLiteデータベースを作成するにはどうすればよいでしょうか?
更新:2016年11月4日
再フォーマット-写真をコード例に。
Info:一部のコード例では、生成されたコードに注意してくださいVisual Studioテンプレートでは省略されています。
更新:2016年7月11日
。NET CoreおよびEntityFrameWork Coreバージョン1.0がリリースされました!
したがって、このガイドは少し更新に値します
ステップ2:
必要なパッケージを入手する
Microsoft.EntityFrameworkCore 1.0.0
Microsoft.EntityFrameworkCore.SQlite 1.0.0
ステップ3:
コンテキストを作成します。
(コンテキストは作成するクラスになります)
_public class DatabaseContext : DbContext
{
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite("Filename=MyDatabase.db");
}
}
_
ステップ4:
コンテキストをサービスに追加します。
(スタートアップクラスにあります)
_public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFrameworkSqlite().AddDbContext<DatabaseContext>();
}
_
ステップ5:
起動メソッドにデータベースを追加して、起動時にデータベースを作成します
(Startupクラスにあります)
_public Startup(IHostingEnvironment env)
{
using(var client = new DatabaseContext())
{
client.Database.EnsureCreated();
}
}
_
エヴォイラ!
これで、ASP.NET CoreアプリケーションでSQLiteを使用できるようになります。
モデルの作成方法およびデータベースコンテキストの使用に関する古いガイドは引き続き適用されます。
更新:2016年5月28日
。NET Core RC2およびEntityFramework Core RC1がリリースされました。
SQLiteのセットアップ手順が改善および簡素化されました。
しかし、Newtonsoft.JsonライブラリとNuGetにエラーがあるため、問題が発生し、複製できません。
これを行いたい場合は、今のところRC1ライブラリに固執することをお勧めします!
ステップ1:
ASP.NET Webアプリケーションを作成します
ステップ2:
[ツール]-> [Nuget Packet Manager]-> [ソリューション用のNugetパッケージの管理]に移動します。
_EntityFramework.SQLite
_を検索し、_Include prelease
_ボックスをオンにします。
パッケージをインストールします
ステップ3:コンテキストの作成
データベースのコンテキストクラスを作成します。
好きな名前を付けて呼び出しますが、MyDbContext
のような慣習的なものを使用しましょう。新しいクラスにDbContextクラスを継承させ、OnConfiguringメソッドをオーバーライドして、接続を次のように定義します。
_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);
}
}
_
ステップ4:
_Startup.cs
_に移動し、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();
}
}
_
次に、サービスを追加する必要があります。
_public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddMvc();
services.AddEntityFramework()
.AddSqlite()
.AddDbContext<MyDbContext>();
}
_
ステップ5:モデルの定義
モデルを作成し、_MyDbContext.cs
_に移動して、新しいモデルごとに新しいプロパティを追加します(それぞれのテーブルが必要な場合!)。
例を次に示します。
私のモデル:
_public class Category
{
public int Id { get; set; }
public string Title { get; set; }
public string Description { get; set; }
public string UrlSlug { get; set; }
}
_
それを私のコンテキストに追加する:
_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);
}
}
_
ステップ6:コンテキストの使用
HomeControllerに移動し、コントローラーに新しいフィールドを追加します。private readonly MyDbContext _myDbContext = new MyDbContext();
そして、返されたビューにそれを渡すことで、ActionResultで使用します:(今、データベースにカテゴリがあると仮定します)
_public IActionResult Index()
{
var category = _myDbContext.Categories.First();
return View(category);
}
_
したがって、インデックスビューに移動すると、データベースからの仮想データを使用できます。次のようにビューの上部でモデルを定義することにより:
_@model MyNameSpace.Models.Category
@{
ViewData["Title"] = "Hey Ho! SO!";
}
<div class="page-header">
<h1>@ViewData["Title"]</h1>
</div>
<div class="container">
@Model.Title
</div>
_
これで、Webアプリケーションを起動し、割り当てられたアドレスに移動すると、デフォルトのhtmlページが表示され、空想bootstrap=ヘッダーが表示され、これがページに表示されます。
2行目は、データベースの最初のカテゴリのタイトルです(またはそうなります)。
これは私の最初のQ&Aです-入力や明確にする必要があるものがあれば、遠慮なくコメントしてください。
これは、SQLiteデータベースをASP.NET Core MVC Webアプリケーションに実装する方法の非常に基本的な例です。
データベースの接続文字列を設定する方法、コンテキストの使用方法、およびEntityFramework 7はまだプレリリースであることに注意してください
データベースにSQLiteを使用してASP.NET Core Webアプリケーションを作成する場合は、 Yeoman を使用してアプリの足場を作成することを強くお勧めします。最初に 。NET Core 1.1 SDK をインストールする必要があります(Visual Studio 2015には、現時点ではSDKバージョン1.0.0および1.0.1のみが含まれているようです)。次に、npmに付属の Node.js をインストールしてから、次のnpmパッケージをインストールする必要があります: yo および generator-aspnet 。あとは、yo aspnet
を実行して、いくつかの質問に答えるだけです。
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
その後、次の応答が返されます。
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
dotnet restore
、dotnet ef database update
、次にdotnet run
を実行し、localhost:5000
に移動して、プロジェクトが実行されていることを確認します。
これで、Visual Studio 2015(Windowsを使用している場合)またはVisual Studio Codeでプロジェクトを開くことができます。
これの素晴らしい点は、Startup.cs
、project.json
、およびappsettings.json
ファイルがSQLiteを使用するように設定されていることです。また、SQLiteデータベースが作成されます:
Startup.cs:
public void ConfigureServices(IServiceCollection services)
{
// Add framework services.
services.AddDbContext<ApplicationDbContext>(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"
}
}
SQLiteデータベースはbin/Debug/netcoreapp1.0
にあります。私の場合、C:\Development\WebApplication\bin\Debug\netcoreapp1.0\WebApplication.db
にあります
SQLiteデータベースの名前を変更する場合は、appsettings.json
ファイルを変更し、dotnet ef database update
を実行します。
.NET CoreおよびEF CoreでSQLiteデータベースを使用する方法の詳細については、この記事をご覧ください。 。NET Core-New Database