有时候想搭个环境做测试, 又记不住那些 command, 官方教程又啰嗦. git clone 模板又不太好管理, 索性记入在这里吧.
Install NuGet
dotnet add package Microsoft.AspNetCore.Diagnostics.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
Files
Product.cs
namespace AzureGetStarted.Entity { public class Product { public int Id { get; set; } public string Name { get; set; } = ""; } }
ApplicationDbContext.cs
using Microsoft.EntityFrameworkCore; namespace AzureGetStarted.Entity { public class ApplicationDbContext : DbContext { public ApplicationDbContext( DbContextOptions<ApplicationDbContext> options ) : base(options) { } public DbSet<Product> Products => Set<Product>(); protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.Entity<Product>().ToTable("Product"); modelBuilder.Entity<Product>().Property(e => e.Name).HasMaxLength(256); } } }
appsettings.json
"ConnectionStrings": { "ApplicationDbContext": "Server=192.168.1.152;Database=AzureGetStarted;Trusted_Connection=True;MultipleActiveResultSets=true" }
Startup.cs > ConfigureServices
services.AddDbContext<ApplicationDbContext>(options => { options.UseSqlServer(Configuration.GetConnectionString("ApplicationDbContext")); });
cmd
dotnet ef migrations add init dotnet ef database update
Index.cshtml
using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc.RazorPages; using Microsoft.Extensions.Logging; using AzureGetStarted.Entity; using Microsoft.EntityFrameworkCore; namespace AzureGetStarted.Pages { public class IndexModel : PageModel { private readonly ILogger<IndexModel> _logger; private readonly ApplicationDbContext _db; public IndexModel( ILogger<IndexModel> logger, ApplicationDbContext Db ) { _logger = logger; _db = Db; } public async Task OnGetAsync() { var products = await _db.Products.ToListAsync(); _db.Products.Add(new Product { Name = "Product1" }); await _db.SaveChangesAsync(); } } }