CodeFirst
0. 安装EF框架Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design
1. 创建Model实体public class Student
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstMidName { get; set; }
public DateTime EnrollmentDate { get; set; }
public ICollection Enrollments { get; set; }
}
public class Course
{
[DatabaseGenerated(DatabaseGeneratedOption.None)]
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
public ICollection Enrollments { get; set; }
}
public enum Grade
{
A, B, C, D, F
}
public class Enrollment
{
public int EnrollmentID { get; set; }
public int CourseID { get; set; }
public int StudentID { get; set; }
public Grade? Grade { get; set; }
public Course Course { get; set; }
public Student Student { get; set; }
}
2. 创建数据上下文public class SchoolContext : DbContext
{
public SchoolContext(DbContextOptions options) : base(options)
{
}
public DbSet Courses { get; set; }
public DbSet Enrollments { get; set; }
public DbSet Students { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity().ToTable("Course");
modelBuilder.Entity().ToTable("Enrollment");
modelBuilder.Entity().ToTable("Student");
}
}
3. 依赖注入
打开Setup.cs文件services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
4. 创建连接字符串
打开appsettings.json文件{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\mssqllocaldb;Database=ContosoUniversity1;ConnectRetryCount=0;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
5. 创建数据库
打开工具 -> NuGet包管理 -> 包管理控制台Add-Migration InitialCreate
Update-Database
如果过程中出现错误:The term 'add-migration' is not recognized as the name of a cmdlet,重启Visual Studio解决。
6. 创建控制器在解决方案资源管理器中,右键单击控制器文件夹,然后选择添加>控制器。
选择视图使用 Entity Framework 的 MVC 控制器,然后单击确定。
将模型类设置为Student,将数据上下文类设置为 StudentContext。
单击 添加。
选中wwwroot右键浏览器查看,输入你的控制器和地址即可,或者直接点击运行。
DbFirst
0. 安装EF框架Install-Package Microsoft.EntityFrameworkCore.SqlServer
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design
1. 初始化数据库CREATE DATABASE [Blogging];
GO
USE [Blogging];
GO
CREATE TABLE [Blog] (
[BlogId] int NOT NULL IDENTITY,
[Url] nvarchar(max) NOT NULL,
CONSTRAINT [PK_Blog] PRIMARY KEY ([BlogId])
);
GO
CREATE TABLE [Post] (
[PostId] int NOT NULL IDENTITY,
[BlogId] int NOT NULL,
[Content] nvarchar(max),
[Title] nvarchar(max),
CONSTRAINT [PK_Post] PRIMARY KEY ([PostId]),
CONSTRAINT [FK_Post_Blog_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [Blog] ([BlogId]) ON DELETE CASCADE
);
GO
INSERT INTO [Blog] (Url) VALUES
('http://blogs.msdn.com/dotnet'),
('http://blogs.msdn.com/webdev'),
('http://blogs.msdn.com/visualstudio')
GO
2. 反向工程生成代码
工具–>NuGet 包管理器–>包管理器控制台Scaffold-DbContext "Server=(localdb)mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
如果遇到错误The term 'Scaffold-DbContext' is not recognized as the name of a cmdlet,请重启Visual Studio!
3. 依赖注入
打开Setup.cs文件services.AddDbContext(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
4. 创建连接字符串
打开appsettings.json文件{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\mssqllocaldb;Database=ContosoUniversity1;ConnectRetryCount=0;Trusted_Connection=True;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
5. 创建控制器在解决方案资源管理器中,右键单击控制器文件夹,然后选择添加>控制器。
选择视图使用 Entity Framework 的 MVC 控制器,然后单击确定。
将模型类设置为Blogs,将数据上下文类设置为 BlogsContext。
单击 添加。
选中wwwroot右键浏览器查看,输入你的控制器和地址即可,或者直接点击运行。
结果