EntityFrameworkCoreを使用したASP.NETコアのSQLite

asp.net-core-mvc asp.net-mvc c# entity-framework-core sqlite3

質問

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<DatabaseContext>();
}

ステップ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.SQLiteInclude 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<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ページが表示されます。
ウェブページ

2番目の行は、データベース内の最初のカテゴリのタイトルです(またはそのようになります)。

Entity Framework 7ドキュメント

これは私の最初のQ&Aです。入力が必要な場合や、明確にする必要があるものについては、コメントを躊躇しないでください。
これは、ASP.NET Core MVC WebアプリケーションにSQLiteデータベースを実装する方法の非常に基本的な例です。
データベースの接続文字列を設定するにはいくつかの方法があり、コンテキストの使い方やEntityFramework 7はプレリリース版であることに注意してください


人気のある回答

データベース用にSQLiteを使用してASP.NET Core Webアプリケーションを作成する場合は、 Yeomanを使用してアプリケーションを足場にしておくことを強くお勧めします。最初に.NET Core 1.1 SDKをインストールする必要があります (Visual Studio 2015にはSDKバージョン1.0.0と1.0.1のみが含まれているようです)。その後、インストールする必要のNode.js :NPMが付属していますし、次のNPMのパッケージインストールヨーヨー発電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 restoredotnet ef database updatedotnet runlocalhost:5000移動して、プロジェクトが実行中であることを確認します。

これで、Visual Studio 2015(Windowsの場合)またはVisual Studioコードでプロジェクトを開くことができます。

Yeomanを使用して生成されたASP.NETコアWebアプリケーション

これについての素晴らしい点は、 Startup.csproject.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ファイルを変更して、 appsettings.json dotnet ef database updateを実行しdotnet ef database update

.NETコアとEFコアでSQLiteデータベースを使用する方法の詳細は、次の記事を参照してください。.NETコア - 新しいデータベース



Related

ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ