使用 ASP.NET Core 和 Entity Framework Core 入门
先决条件
安装以下组件:
- .NET Core 2.0.0 SDK 或更高版本。
- 已安装 ASP.NET 和 Web 开发工作负载的 Visual Studio 2017 15.3 版或更高版本
使用EF code First 创建学生信息
1.添加student类
public class Student { public int ID { get; set; } [StringLength(50)] public string LastName { get; set; } [StringLength(60, ErrorMessage = "First name cannot be longer than 50 characters.")] public string FirstMidName { get; set; } [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public DateTime EnrollmentDate { get; set; } public ICollection<Enrollment> Enrollments { get; set; } }
2.创建的数据库上下文(添加DataContext类继承Microsoft.EntityFrameworkCore.DbContext)
namespace EFCoreSample.Models { public class DataContext: DbContext { public DataContext(DbContextOptions<DataContext> options) : base(options) { } public DbSet<Student> Students { get; set; } //public DbSet<Course> Courses { get; set; } //public DbSet<Enrollment> Enrollments { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { //modelBuilder.Entity<Course>().ToTable("Course"); //modelBuilder.Entity<Enrollment>().ToTable("Enrollment"); modelBuilder.Entity<Student>().ToTable("Student"); } } }
3.上下文注册依赖关系注入
1.appsettings.json配置数据库连接字符串
{ "ConnectionStrings": { "SqlServer": "Data Source=.;Initial Catalog=SchoolDb;Integrated Security=True" }, "Logging": { "IncludeScopes": false, "LogLevel": { "Default": "Warning" } } }
2.打开Startup.cs ConfigureServices方法添加代码
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<DataContext>(options => options.UseSqlServer(Configuration.GetConnectionString("SqlServer"))); services.AddMvc(); }
3.创建数据库已经初始化数据
添加DbInitializer.cs
public static class DbInitializer { public static void Initialize(DataContext context) { //当数据库数据为空时,默认填充数据 context.Database.EnsureCreated(); if (context.Students.Any()) { return; } var students = new Student[] { new Student{FirstMidName="Carson",LastName="Alexander",EnrollmentDate=DateTime.Parse("2005-09-01")}, new Student{FirstMidName="Meredith",LastName="Alonso",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Arturo",LastName="Anand",EnrollmentDate=DateTime.Parse("2003-09-01")}, new Student{FirstMidName="Gytis",LastName="Barzdukas",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Yan",LastName="Li",EnrollmentDate=DateTime.Parse("2002-09-01")}, new Student{FirstMidName="Peggy",LastName="Justice",EnrollmentDate=DateTime.Parse("2001-09-01")}, new Student{FirstMidName="Laura",LastName="Norman",EnrollmentDate=DateTime.Parse("2003-09-01")}, new Student{FirstMidName="Nino",LastName="Olivetto",EnrollmentDate=DateTime.Parse("2005-09-01")} }; foreach (Student s in students) { context.Students.Add(s); } context.SaveChanges(); } }
找到Program.cs Main方法添加代码
public static void Main(string[] args) { var host = BuildWebHost(args); using (var scope = host.Services.CreateScope()) { var services = scope.ServiceProvider; try { var context = services.GetRequiredService<DataContext>(); DbInitializer.Initialize(context); } catch (Exception ex) { var logger = services.GetRequiredService<ILogger<Program>>(); logger.LogError(ex, "An error occurred while seeding the database."); } } host.Run(); }
ps:可以添加相应的Controller和view运行项目操作数据
更多例子请参考 https://docs.microsoft.com/zh-cn/aspnet/core/data/ef-mvc/intro