Jiro Laboratory

C#、ASP.NET、JavaScript、Androidとか

.NET Core コンソールアプリでの SQLServer LocalDB の使用

docs.microsoft.com

上記は dotnet コマンド を使って SQLite を使用するサンプルです。
以下に、Visual Studio を使って SQL Server(LocalDB) を使用する場合の手順を残しておきます。

Entity Framework Core のインストール、DB作成

Entity Framework Core をインストール

パッケージマネージャーコンソールから以下を実行

PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer
PM> Install-Package Microsoft.EntityFrameworkCore.Tools
モデルを作成

Models.cs

public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=blogging;Trusted_Connection=True;MultipleActiveResultSets=true");
    }
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public ICollection<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}
データベースの作成

パッケージマネージャーコンソールから以下を実行

PM> Add-Migration InitialCreate
PM> Update-Database

この時点で Local DB が作成されます。

データベースへのアクセス

以降は通常の Entity Framework の作法でアクセスが可能です。
Program.cs

public static void Main()
{
    using (var db = new BloggingContext())
    {
        db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
        var count = db.SaveChanges();
        Console.WriteLine("{0} records saved to database", count);

        Console.WriteLine();
        Console.WriteLine("All blogs in database:");
        foreach (var blog in db.Blogs)
        {
            Console.WriteLine(" - {0}", blog.Url);
        }
    }
}