Entity Framework Core
開發方式

Entity Framework Core 的開發方式與原有 Entity Framework 不同的是，Entity Framework Core 不再支援以 UI 為主的資料庫組態 (這是為了要適應 Linux 與 Mac 的開發環境)，且不論是何種模式 (Database First / Code First)，都是以程式碼為主的環境對應，不再有 EDMX (Entity Framework Metadata) 存在，為達成這個目標，Entity Framework 提供了 Scaffold-Database 指令 (於 Package Management Console 中執行)，允許開發人員由資料庫來產生 Model 的程式碼。
Scaffold-DbContext "'Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;''" Microsoft.EntityFrameworkCore.SqlServer
原本 Entity Framework 現有的資料模型同步指令 Add-Migration 與 Update-Database 在 Entity Framework Core 仍然支援，包含前述的 Scaffold-Database 指令，都被包裝在 Microsoft.EntityFrameworkCore.Tools 套件內，可以由 Package Management Console 中執行 Install-Package 安裝它，或是直接編輯 project.json 將它加入相依套件，然後再於 project.json 中加入工具的相關設定：
"tools": {
    "Microsoft.EntityFrameworkCore.Tools": {
      "version": "1.0.0-preview1-final",
      "imports": [
        "portable-net45+win8+dnxcore50",
        "portable-net45+win8"
      ]
    }
若是使用 Scaffold-Database 指令探測資料庫時，除了 Model 會自動產生外，也會一併產生 DbContext 類別的衍生程式，作為連結資料庫的入口，若是由新資料庫，或是未使用 Scaffold-Database 指令的話，就要自行撰寫這個類別。
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;

namespace EFGetStarted.AspNetCore.ExistingDb.Models
{
    public partial class BloggingContext : DbContext
    {
        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Blog>(entity =>
            {
                entity.Property(e => e.Url).IsRequired();
            });

            modelBuilder.Entity<Post>(entity =>
            {
                entity.HasOne(d => d.Blog)
                    .WithMany(p => p.Post)
                    .HasForeignKey(d => d.BlogId);
            });
        }

        public virtual DbSet<Blog> Blog { get; set; }
        public virtual DbSet<Post> Post { get; set; }
    }
}
就可以使用 DbContext 來操作資料庫了，之後的部份就和 Entity Framework 差異不大。

若是 ASP.NET Core，則需再到 ASP.NET Core 的起始類別 (例如 Startup.cs)，將 Entity Framework Core 的 DbContext 加到 Dependency Injection 裡面。
public void ConfigureServices(IServiceCollection services)
{
    var connection = @"Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;";
    services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
    // ...
}
之後就可以由 Controller 取得這個 DbContext 進行資料存取的動作了，例如：
using EFGetStarted.AspNetCore.ExistingDb.Models;
using Microsoft.AspNetCore.Mvc;
using System.Linq;

namespace EFGetStarted.AspNetCore.ExistingDb.Controllers
{
    public class BlogsController : Controller
    {
        private BloggingContext _context;

        public BlogsController(BloggingContext context)
        {
            _context = context;
        }

        public IActionResult Index()
        {
            return View(_context.Blog.ToList());
        }

        public IActionResult Create()
        {
            return View();
        }

        [HttpPost]
        [ValidateAntiForgeryToken]
        public IActionResult Create(Blog blog)
        {
            if (ModelState.IsValid)
            {
                _context.Blog.Add(blog);
                _context.SaveChanges();
                return RedirectToAction("Index");
            }

            return View(blog);
        }

    }
}