質問: EntityFramework 7を使用してASP.NET Core WebアプリケーションでSQLiteデータベースを追加および使用するにはどうすればよいですか? 私はそれについて聞き、最初のWebアプリケーションを作成した瞬間、ASP.NET Coreに飛び込んで、私は突然、私が保存したいと思っていたデータをたくさん持っていました.SQLiteは明らかな選択肢のように思えました。 私はアプリケーションにとどまりたいので、軽量でシンプルで、別のデータベースを設定しないようにしてください。 だから、ASP.NETコアでSQLiteデータベースを作成するにはどうすればいいですか? * ASP.NET Core - 以前はASP.NET MVC 6と呼ばれていました * EntityFramework Core - 以前はEntityFramework 7として知られていました
回答: **アップデート:2016年11月4日** 再フォーマット - 画像をコード例に変換する ***Info*** :一部のコード例では、ビジュアルスタジオテンプレートによって生成されたコードは省略されています。 **アップデート:2016年7月11日** .NET CoreおよびEntityFrameWork Coreバージョン1.0がリリースされました! だから、このガイドは少し更新に値する **ステップ1:** アプリケーションを作成します。 !ここに画像の説明を入力 **ステップ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(); } ``` **ステップ5:** 始動時にデータベースを作成するには、始動メソッドにデータベースを追加します。 (Startupクラスにあります) ``` public Startup(IHostingEnvironment env) { using(var client = new DatabaseContext()) { client.Database.EnsureCreated(); } } ``` Et Vola! ASP.NET CoreアプリケーションでSQLiteを使用できるようになりました。 古いガイドは、モデルの作成方法とデータベースコンテキストの使用方法に関しても適用されます。 **アップデート:2016年5月28日** .NET Core RC2およびEntityFramework Core RC1がリリースされました。 彼らはSQLiteの設定手順を改善し、簡略化しました。 しかし、私はNewtonsoft.JsonライブラリとNuGetのエラーのために、いくつかの問題を経験しており、複製できません。 *これをやりたいならRC1ライブラリに固執することをお勧めします。* **ステップ1:** ASP.NET Webアプリケーションを作成する !ASP.NET5WebApp **ステップ2:** ツール - > Nuget Packet Manager - > SolutionのNuget Packagesを管理します。 `EntityFramework.SQLite`を検索し、 `EntityFramework.SQLite`を`Include prelease`ボックスを`Include prelease`ます。 パッケージをインストールする !NugetEF7Sqlite **ステップ3:コンテキストを作成する** データベースのコンテキストクラスを作成します。 あなたが欲しいものは何でもそれを呼び出すが、MyDbContextのような`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(); } ``` **ステップ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 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!"; } @ViewData["Title"] @Model.Title ``` 今度はWebアプリケーションを起動し、割り当てられたアドレスに行くと、ページにこれを示す、派手なブートストラップヘッダーを持つデフォルトのhtmlページが表示されます。 ![ウェブページ 2番目の行は、データベース内の最初のカテゴリのタイトルです(またはそのようになります)。 Entity Framework 7ドキュメント *これは私の最初のQ&Aです。入力が必要な場合や、明確にする必要があるものについては、コメントを躊躇しないでください。 これは、ASP.NET Core MVC WebアプリケーションにSQLiteデータベースを実装する方法の非常に基本的な例です。 データベースの接続文字列を設定するにはいくつかの方法があり、コンテキストの使い方やEntityFramework 7はプレリリース版であることに注意してください*