使用 EF Code First + Mysql


這兩天沒事,研究EF 以往都是 連 mssql 微軟親兒子,換成了 mysql之后就問題百出,下面記錄一下怎么使用 EF code first  +  mysql 數據庫;

項目中,nuget先引入 EF 擴展 ;

 

 

如果本地有EF擴展了,可以使用 程序包管理控制台安裝,命令如下。

PM> Install-Package EntityFramework -Version 6.0.0

 

然后nuget 安裝    MySql.Data.Entity  這個擴展是mysql用來支持 EF 的

 

 

 

 

我這里引入的是 6.10.9 最新 版本 ;

引入擴展后,VS將自動生成了 配置文件 app.config;

<?xml version="1.0" encoding="utf-8"?>
<configuration>
  <configSections>
    <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  </configSections>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.10.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      </provider>
    </providers>
  </entityFramework>
  <!-- 新增下方連接字符串 -->

<connectionStrings>
    <add name="DataAccess" connectionString="Datasource=127.0.0.1;port=3306;Database=zyturo;uid=root;pwd=fubing;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
</configuration>

 

鏈接字符串的配置;

 <connectionStrings>
    <add name="DataAccess" connectionString="Datasource=127.0.0.1;port=3306;Database=zyturo;uid=root;pwd=fubing;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>

創建和數據庫映射的關系實體類

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ZY.Tour.EntityFramework
{
    public class TB_Admin
    {
        /// <summary>
        /// 管理員ID
        /// </summary>
        [Key]
        public Int32 Admin_ID { get; set; }
        /// <summary>
        /// 管理員登錄賬號
        /// </summary>
        [Required]
        public string Account { get; set; }
        /// <summary>
        /// 管理員登錄密碼
        /// </summary>
        [Required]

        public string Password { get; set; }
        /// <summary>
        /// 加密鹽
        /// </summary>
        [Required]

        public string Salt { get; set; }
        /// <summary>
        /// 創建時間
        /// </summary>
        public Nullable<DateTime> CreateTime { get; set; }
        /// <summary>
        /// 幫助注冊人的ID
        /// </summary>
        public Int32 ParentID { get; set; }
        /// <summary>
        /// 最后登錄IP
        /// </summary>
        public string LastLoginIP { get; set; }

        /// <summary>
        /// 管理員所在部門ID
        /// </summary>
        public Int32 Department_ID { get; set; }
    }
}

 

實體類屬性上添加了 特性 (Attribute)  這塊具體的說明可以參考 園友文章: https://www.cnblogs.com/dotnet261010/p/9111954.html

[Key] 表示主鍵,他是自動遞增的 從0開始;

[Required] 表示不能為空 

 

需要了解更多特性標注使用類,可以在對象瀏覽器 看 System.ComponentModel.DataAnnotations 命名空間下都有哪些特性的定義;

 

 

 

下面是我創建的一個DataAccess 類,用於操作數據庫;

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ZY.Tour.EntityFramework
{
    [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class DataAccess : DbContext
    {
        public DataAccess() : base("name=DataAccess")
        {
        }
        public virtual DbSet<TB_Admin> Admin { get; set; }
    }
}
[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
在 DbContent類上添加了一條標注,用於聲明為生成為 mysql 的數據類型;

至此就可以正常使用了,我搭建了一個單員測試項目,測試通過;

 public void TestMethod1()
        {
            var da = new DataAccess();
            da.Admin.Add(new TB_Admin
            {
                Account = "fubing",
                CreateTime = DateTime.Now,
                Password = "123123",
                Salt = "123123"
            });
            da.SaveChanges();
            Assert.IsTrue(true);
        }

數據庫被自動創建 並 創建 表和 數據了;

 

 

 

好了,記錄完畢;

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM