Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接

首先在 VS2017 中新建 Web ASP.NET Framework 项目

Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第1张图片

选择MVC结构
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第2张图片

使用NuGet包管理器安装插件
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第3张图片

安装 Entity Framework
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第4张图片

【摘抄】

EF是一种ORM工具,ORM表示对象关联映射
在RDMS中,对象称为表格和列对象,而在.net中(面向对象)称为类,对象以及属性。

任何数据驱动的应用实现的方式有两种:

  • 通过代码与数据库关联(称为数据访问层或数据逻辑层)。

  • 通过编写代码将数据库数据映射到面向对象数据,或反向操作。

ORM是一种能够自动完成这两种方式的工具。EF是微软的ORM工具。

什么是代码优先的方法?

EF提供了三种方式来实现项目:

  • 数据库优先方法——创建数据库,包含表,列以及表之间的关系等,EF会根据数据库生成相应的Model类(业务实体)及数据访问层代码。

  • 模型优先方法——模型优先指模型类及模型之间的关系是由Model设计人员在VS中手动生成和设计的,EF将模型生成数据访问层和数据库。

  • 代码优先方法——代码优先指手动创建POCO类。这些类之间的关系使用代码定义。当应用程序首次执行时,EF将在数据库服务器中自动生成数据访问层以及相应的数据库。

什么是POCO类?

POCO即Plain Old CLR对象,POCO类就是已经创建的简单.Net类。在上两节的实例中,Employee类就是一个简单的POCO类。

查看Web.Config,定位项目根目录下的Web.Config, Entity Framework安装完成后,安装程序会主动更新该文件,可以看到配置中自动增加了如下配置信息

<entityFramework>
  <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
    <parameters>
      <parameter value="mssqllocaldb" />
    parameters>
  defaultConnectionFactory>
  <providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
  providers>
entityFramework>

【摘抄】

Web.config文件是一个XML文本文件,它用来储存ASP.NETWeb 应用程序的配置信息(如最常用的设置ASP.NETWeb 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中。当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置。如果你想修改子目录的配置设置,你可以在该子目录下新建一个Web.config文件。它可以提供除从父目录继承的配置信息以外的配置信息,也可以重写或修改父目录中定义的设置。

要连接MySQL,我们还需要执行如下额外步骤:

从官网下载并安装MySQL到目标服务器,这里下载安装的是 mysql-5.5.61-winx64.msi,安装过程注意记录配置的账户密码,字符集最好选择 utf8
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第5张图片

下载并安装 mysql-connector-net-6.10.7.msi,这是MySQL的 ADO.NET驱动
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第6张图片

下载并安装mysql-for-visualstudio-1.2.8.msi,该工具为Microsoft Visual Studio提供了访问MySQL对象和数据的通道
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第7张图片

接下来回到Visual Studo界面,安装MySql Data Entity
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第8张图片

**查看Web.Config, 此时项内项新增了如下信息:

<provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      provider>providers>

在解决方案项目任一文件夹点击右键,选择“添加”–“新建项”,查看VisualStudio新建项,此时“数据库”分类下已包含ADO.NET实体数据模型
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第9张图片

配置数据库映射并连接MySQL数据库,有两种分类四个方式如下
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第10张图片

其中来自数据库的EF设计器来自数据库的Code First选项是将数据库表信息导入Visual Studio,创建时需要连接数据库并指定要导入的表(实体)信息生成模型
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第11张图片
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第12张图片

来自数据库的EF设计器模式生成的模型,可以看到和数据库里的表结构是一致的
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第13张图片
User.cs是向导根据数据库自动生成的User类,UserModel.Context.cs文件里包含的TestEntities类是向导生成的数据上下文类,该类用于映射数据库,在控制器中对数据模型进行操作时都要先对其实例化,name=TestEntities是连接数据库字符串的名称
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第14张图片
Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第15张图片
该项下模型代码根据EF设计自动生成,即所谓的DataFirst模式
此时Web.Config内新增了如下连接信息,metadata参数的意思是加载所有目录下的.csdl、ssdl、msl文件,详见【参考文章】

<connectionStrings>
<add name="testEntities" connectionString="metadata=res://*/Models.Model1.csdl|res://*/Models.Model1.ssdl|res://*/Models.Model1.msl;provider=MySql.Data.MySqlClient;provider connection string="server=localhost;user id=root;password=test;database=test"" providerName="System.Data.EntityClient" />
connectionStrings>

来自数据库的CodeFirst生成了两个文件Models2.csuser.cs,该模式下直接生成模型代码及数据库关系定义
此时Web.Config内新增如下连接信息:

<connectionStrings>
<add name="Model22" connectionString="server=localhost;user id=root;password=test;database=test" providerName="MySql.Data.MySqlClient" />
connectionStrings>

**这两个选项都需要先在数据库中定义好表关系,Visual Studio 中模型由数据库生成

空 EF 设计模型空 Code First 模型则是先在Visual Studio中创建EF设计或模型代码定义,然后再导入生成数据库表及关系

空 EF 设计模型 会生成一个空的EF设计器相关文件,此时在Visual Studio中通过可视化界面设计定义EF设计,然后根据当前EF设计生成模型代码并同步到数据库,例如以下步骤

  • 创建EF设计
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第16张图片
  • 生成模型代码
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第17张图片
  • 更改DLL生成模板到MySQL
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第18张图片
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第19张图片
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第20张图片
  • 根据模型生成数据库
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第21张图片
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第22张图片
    会生成一个sql脚本文档,在MySQL终端中执行这个sql脚本文档(推荐用SQLyog)
    Visual Studio 2017 ASP.NET Framework MVC 项目 MySQL 配置连接_第23张图片

空 Code First 模型 可以理解为正常使用代码定义一个数据关系模型,然后同步到数据库表中, 新建后会自动生成一个文件Modelsx.cs,Modelsx类继承了DbContext,可在手动新建一个代码文件并定义模型类(例如use.cs)(推荐新建文件,也可根据自动生成的代码示例直接定义在Modelsx中)
如下新建该项后Web.Config中新增如下信息:

<add name="ModelTest" connectionString="data source=(LocalDb)\MSSQLLocalDB;initial catalog=WebApplication1.Models.Modelsx;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />

name=ModelTest指定了当前连接关联的模型,需要修改这个配置以正确连接并更新代码模型到MySQL数据库中,观察connectionString内容,其中

  • data source定义了数据库的连接信息**
  • initial catalog定义了数据库初始化信息,此处的值指定了数据库初始化时的名称,而非初始化时加载代码
  • providerName指定了需要关联的数据库驱动
  • integrated security集成验证,使用Windows验证的方式去连接到数据库服务器,不是必须的
  • MultipleActiveResultSets的作用是指定多活动的结果集是否与指定的链接相互关联,可以使数据库连接复用减轻系统的负担,不是必须的
  • App=EntityFramework 不是必须的

connectionString修改为如下内容

<add name="ModelTest" connectionString="server=localhost;user id=root;password=test;database=testdb;charset=utf8;initial catalog=testdb;" providerName="MySql.Data.MySqlClient" />

根据ModelTest.csuse.cs 定义TestController.cs代码,如在ModelTest中定义方法用来操作数据库use表

public ModelTest()
             : base("name=uses")
{
         public DbSet uses { get; set; }
}

TestController中定义

public ActionResult Index()
{
    ModelTest modelTest = new ModelTest();
        uselist = modelTest.uses.toList();
        return View('MyUsesView', uselist);
}

则当浏览localhost:*/Test时,服务器代码会自动在MySQL中创建testdb数据库并在testdb中创建uses表。

你可能感兴趣的:(ASP.NET,Framework)