首先声明,这是我才学MVC5+EF的水平,但网上愿意解答的太少了,而很多所谓的项目,全是成品项目,根本无法看懂。
此实例是以我新人的水平自行研究玩的,肯定有代码的不规范和不简洁,高手请勿喷。同时欢迎打赏呀.
如何创建MVC5项目就跳过了呀。
一、用Identity使用MSSQL自动生成用户管理系统
要设计项目,用户及权限管理肯定是第一课。按心中的思想,建个表,通过SQL读用户名&&密码是否相等,如相等,存入Session。但在网上查了一下,MVC一直自己在做这个权限管理,肯定比自己的强大,特别他可以方便的在控制器处进行管理。这个在MVC5中叫Identity。知道其生成5张表,但有二张还不会用。先将步骤如下。
1.表的设计:不用设计,Identity自动生成。
2.如何与自己的MSSQL进行关联。自动为我生成哩。?
(1)设置web.config,主要设置连接字符串,我的如下:
MyOAContext"connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=MyOA;User ID=sa;password=js7221511"providerName="System.Data.SqlClient"/>
(2)将Identity的自带的连接字符串进行更改。在Models中的IdentityModels.cs中的连接字符串进行更改
publicApplicationDbContext()
:base("MyOAContext")
{
}
///简单说明一下,在这个CS类文件中:
下面部份可以对User角色字段进行扩展的地方,用于你在注册管理时使用。但我OA是在后台增加用户和角色,所以这步没理他:
public classApplicationUser : IdentityUser
{ }
3.保存,进行测试。然后点击登录。
不要着急,随便输入一个用户名密码,他会提示出错。
然后你点开MSSQL企业登录器一看,YE,有5表自动建好了,这些表原有的字段不要动它。
4. 但生成后点开用户表,你会发现,其密码是加密的,而且非普通的加密,网上查了下很高级,那么我如何管理哩?下面的这一串就是6个1的加密码所得:
AOGMv8HwY2ECSulhL4wXIX01RgAigbxjUy5LPJp6NSpiKbkc97cvlbFUH27pO0igzQ==
我是通过先注册一个用户名,密码111111,结果成上面的了,哈哈。复制下来,用于以后新增加用户作为初始用户使用。或重置密码。当然这很实用和简单,想研究如何完成这个加解密,我觉得先放在最后最后。
如此,我的自动生成,使用自带的Identity就已完成。同时使用了MSSQL数据库。
二、对Identity生成的表进行扩展。
1.扩展AspNetUsers:(用户表):这个表最后一个字段,是因为我想一个人只能属于一个唯一的部门,放在这,就少了一个关联表了。
2.然后进行测试:会提示错误,7.APP***contion 数据库上下文发生改变,需要用Code First进行数据库迁移。
然后在网上不停的寻找答案,终于找到如何Code First.老手不要喷,新人就是这样,一个小问题要搞几个小时,这也是我在这以初手的心得来写教程。
在迁改前,先将ROle也一并扩展了,但我想一下,Role表很简单就是ID和名称,就没有扩展。
下面是迁改Cdoe First的步骤:
(1)运行:
Enable-Migrations -Force
将运行后在项目项目资源管理器中会出现Migrations文件夹 类Configuration呈打开状态,将AutomaticMigrationsEnabled值改为true.
PM> Enable-Migrations -Force
正在检查上下文的目标是否为现有数据库...
检测到使用数据库初始值设定项创建的数据库。已搭建与现有数据库对应的迁移“201508310731052_InitialCreate”的基架。若要改用自动迁移,请删除 Migrations 文件夹并重新运行指定了 -EnableAutomaticMigrations 参数的 Enable-Migrations。
已为项目 MyOA 启用 Code First 迁移。
PM> update-database
指定“-Verbose”标志以查看应用于目标数据库的 SQL 语句
没有挂起的显式迁移。
无法将数据库更新为与当前模型匹配,因为存在挂起的更改并且禁用了自动迁移。将挂起的模型更改写入基于代码的迁移或启用自动迁移。将 DbMigrationsConfiguration.AutomaticMigrationsEnabled 设置为 true 以启用自动迁移。
您可使用 Add-Migration 命令将挂起的模型更改写入基于代码的迁移。
PM> update-database
指定“-Verbose”标志以查看应用于目标数据库的 SQL 语句。
没有挂起的显式迁移。
正在应用自动迁移: 201508310819302_AutomaticMigration。
未应用自动迁移,因为自动迁移会导致数据丢失。如果要在可能导致数据丢失的情况下允许应用自动迁移,请在 DbMigrationsConfiguration 上将 AutomaticMigrationDataLossAllowed 设置为 "true"。也可以将 Update-Database 与 "-Force" 选项一起使用,或者构建基架执行显式迁移。
PM> Add-Migration Initial
正在为迁移“Initial”搭建基架。
此迁移文件的设计器代码包含当前 Code First 模型的快照。在下一次搭建迁移基架时,将使用此快照计算对模型的更改。如果对要包含在此迁移中的模型进行其他更改,则您可通过再次运行“Add-Migration Initial”重新搭建基架。
PM> Update-Database
指定“-Verbose”标志以查看应用于目标数据库的 SQL 语句。
正在应用显式迁移: [201508310822281_Initial]。
正在应用显式迁移: 201508310822281_Initial。
正在运行 Seed 方法。
PM>
3.确定后我进行测试,YE,完成成功了。
然后又测试注册了二个用户名,进行不停的登录,感觉很方便,充分利用MVC5自带的Identity,与MSSQL结合自动生成用户权限管理系统就完成了。
二、安装项目所需的包:
在工具-序程序管理器-控制台:
1.安装EF
Install-Package EntityFramework
2.安装分页
Install-Package PagedList.Mvc