HTML5技术

ASP.NET5+EntityFramework7开发实践(一) - GiveCase

字号+ 作者:H5之家 来源:博客园 2015-10-28 09:33 我要评论( )

1.创建项目 创建空白解决方案,名为 GiveCase 。 在解决方案里,添加ASP.NET5 Empty模板项目,名为 GiveCase.Web 。 2.实体类 实体基类: 实体 抽象基类 EntityBaseTKey 6 { 主键 TKey Id { get ; set ; } 11 } 角色实体类 角色 实体类 Role:EntityBase int

 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.仓库模式

    我们已经生成的代码,最好封装一下持久化操作。先不用泛型封装,添加接口:

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    2017-05-02 11:02

  • 【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    【Vue 入门】使用 Vue2 开发一个展示项目列表的应用 - zhangjk

    2017-04-30 16:00

  • 在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    在Delphi下使用迅雷APlayer组件进行免注册开发 - Delphi力量

    2017-04-28 15:00

  • 随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 - 在路在的张

    随应潮流-基于ABP+Angularjs现代化应用软件开发框架(1)-总体介绍 -

    2017-04-22 08:04

网友点评
)