aspMVC5,如何使⽤mysql数据库,使⽤MVC框架中⾃带的identity⽤。。
问题如题
现在很多时候,即使是项⽬,我们⽤的数据库也未必时是 SQL Server了。
但很多VS ⾃带的框架(如MVC 、WebAPI等框架)中的⽰例⾃带的仍然是默认Sql Server的,⽽且并不⼀定好改成别的数据库。这有时候就很苦恼。
⽐如 MVC框架中⾃带的⼀套⽤户体系,含有⽤户登录注册权限⾓⾊等⼀⼤堆的功能。如果我们开始⼀个新项⽬,不得不使⽤Sql Server以外的数据库的化,⽽且⼜没有⾜够的成本来重新开发⼀套权限管理机制的话,那我们要怎么办呢?
⾃⼰仓促写的通常⼜太low,也不怎么安全。
套⽤别的⼜很⿇烦。
⽽实际上,这种情况在我的⼯作经历中⼀直持续发⽣,到现在我也没能成功地运⽤好VS 框架中⾃带的那⼀套权限体系,每次都⾃⼰开发,但⼜觉得有点low。
痛定思痛啊,这篇博⽂就是为了解决这个问题。
这⾥⾯提供两种思路和⽅案。
经尝试,就算我最终在fig⾥⾯把mysql的配置好,项⽬可以启动,但注册和登录等需要读写数据库的时候还是会出错。
原因很简单,sql server的话,可以直接创建数据库和表,毕竟是⾃家亲⼉⼦。
别的数据库,⽐如mysql,就⽆法创建数据库和表,也就失败了。
table XXX not existed的错误提⽰很明显了。
于是我就想到了⼀种低级⼀点的办法,事实证明,好理解,也有效。
1.低级⼀点的。
⼿⼯按照框架⾥要的那样,建好⼀个数据库和表,以及对应字段。
如图:
那么你⼜要问,到底是什么结构呢? 这多⿇烦啊
我的办法是:
⽤VS新建⼀个MVC项⽬,然后就简单粗暴运⾏,注册等。此时会发现已经有sql server数据库和表⽣成了。 如图
“视图” – sql server对象管理器“
然后,
依次获得到各个table的创建语句
然后就可以看到打开的sql⽂件⾥的类似如下的sql语句⽚段:
USE [aspnet-WebApplication4-20180326090819]
GO
/****** 对象: Table [dbo].[AspNetRoles] 脚本⽇期: 2018/3/27 11:46:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[AspNetRoles] (
[Id]  NVARCHAR (128) NOT NULL,
mysql下载的vs库放在那个文件里[Name] NVARCHAR (256) NOT NULL
);
GO
CREATE UNIQUE NONCLUSTERED INDEX [RoleNameIndex]
ON [dbo].[AspNetRoles]([Name] ASC);
GO
ALTER TABLE [dbo].[AspNetRoles]
ADD CONSTRAINT [PK_dbo.AspNetRoles] PRIMARY KEY CLUSTERED ([Id] ASC);
可以⽤来创建mysql中的表吗?
机智哦
不过直接粘贴过去执⾏还是会报错的,毕竟是不同的数据库,数据类型、语法什么的还是有些不⼀样。
我们就取其中的
CREATE TABLE [dbo].[AspNetRoles] (
[Id]  NVARCHAR (128) NOT NULL,
[Name] NVARCHAR (256) NOT NULL
);
创建表的这句话去mysql中建表就⾏了。
再相应修改⼀下:
CREATE TABLE AspNetRoles (
Id  VARCHAR (128) NOT NULL,
Name VARCHAR (256) NOT NULL
);
如上,我去掉了dbo,去掉了中括号,NVARCHAR改为VARCHAR。
然后在mysql中执⾏,真的就成功了。
所以,另外的⼏个表,以此类推,在mysql中就可以得到⼏个表,结构和字段与sql server中的都⼀致了。 这些我已经亲测了,确实成功。
⽽且后续的运⾏,注册,登录等都可以成功。
不再赘述。
总之,这⾥算是耍了个滑头。
但也算是解决了问题,毕竟能⽤。
但上述⽅法真的好勉强啊。
问题的关键其实很简单,就是在现有代码条件下,mysql没法直接就创建了mysql table这些东西。
如果能呢,那岂不是很好?
这也就是我后来终于到的
2. ⾼级⼀点的做法
我本机的环境:
windows 10 64bit
Visual Studio 2015 旗舰版,.NET 4.5.2,
Mysql 5.7.17 社区版。
按照博⽂中的配置好之后,直接运⾏成功,⼀字不改。 ⽽且注册登录都成功写⼊数据库。
完全仿照这个做完就好了。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。