1.创建项目
创建“空白解决方案”,名为GiveCase。
在解决方案里,添加ASP.NET5 Empty模板项目,名为GiveCase.Web。
2.实体类
实体基类:
实体 抽象基类 EntityBase<TKey> 6 { 主键 TKey Id { get; set; } 11 }
角色实体类
角色 实体类 Role:EntityBase<int> 5 { 角色名 Name { get; set; } 角色描述 Description { get; set; } 用户集合 导航属性 ICollection<User> Users { get; set; } 20 }
用户实体类:
用户 实体类 User : EntityBase<int> 5 { 用户名 Name { get; set; } 密码 Password { get; set; } 角色Id 外键 RoleId { get; set; } 角色 导航属性 Role Role { get; set; } 25 }
3.EF安装
打开project.json,在 "dependencies": {}中,添加:
: , :
在"commands": {}中,添加:
:
注:如果你不需要手动迁移数据库,可以不要用安装 EntityFramework.Commands及配置其commands。
4.数据库上下文
数据库上下文类:
数据库上下文类 EFContext : DbContext 5 { 6 public DbSet<Role> Roles { get; set; } 7 public DbSet<User> Users { get; set; } OnModelCreating(ModelBuilder modelBuilder) 10 { 11 #region 角色属性 12 modelBuilder.Entity<Role>().Property(r => r.Name).IsRequired(); 13 modelBuilder.Entity<Role>().Property(r => r.Description).HasMaxLength(300); 用户属性 17 modelBuilder.Entity<User>().Property(u => u.Name).IsRequired(); 18 modelBuilder.Entity<User>().Property(u => u.Password).IsRequired(); 配置关系 22 modelBuilder.Entity<Role>().HasMany(r => r.Users).WithOne(u => u.Role) 23 .ForeignKey(u => u.RoleId).WillCascadeOnDelete(); } 26 }
注:配置属性及关系,这里采用是Fluent API方式,你可以在实体类代码中采用Data Annotations特性标注方式。
5.数据库连接字符串
添加config.json,其代码:
{ : { : { : } } }
5.配置文件读取
修改Startup.cs中的方法:
1 public IConfigurationRoot Configuration { get; set; } Startup(IApplicationEnvironment appEnv) 4 { 5 var builder = new ConfigurationBuilder() 6 .SetBasePath(appEnv.ApplicationBasePath) ); 8 9 Configuration = builder.Build(); 10 } ConfigureServices(IServiceCollection services) 13 { 14 services.AddEntityFramework().AddSqlServer() 15 .AddDbContext<EFContext>(options => options ])); 17 }
6.手动迁移数据库
在VS中的“程序包管理器控制台”(在dos也行)下,进入到项目根目录。
执行:dnx ef migrations add FristMigration
命令执行成功后,项目结构就填加了Migrations文件夹,里面会有ModelSnapshot文件。
此时并没有创建数据库,再执行:dnx ef database update
这样两步骤(添加数据库迁移,更新到数据库)就完成数据库创建。
7.控制器代码生成
打开project.json ,在"dependencies": {}中,添加:
: , : ,
在"commands": {}中,添加:
:
在VS中的“程序包管理器控制台”(在dos也行)下,进入到项目根目录。
我们添加Home控制器,执行:dnx gen controller -name HomeController
此时项目结构就添加Controllers和Views文件夹等,也添加了Microsoft.AspNet.Mvc程序集。
如何生成T4(GRUD)模板的控制器?
添加Role控制器,执行: dnx gen controller -name RoleController -m Role -dc EFContext
这样控制器代码,增删改查方法有了,相应的视图也生成了。
8.仓库模式
我们已经生成的代码,最好封装一下持久化操作。先不用泛型封装,添加接口: