EF6连接MySQL若干问题汇总

问题1. 中文乱码问题

连接字符串已经设置charset=utf8,但依旧出现乱码,解决方法:配置字符串字段约定支持Unicode

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Properties<string>().Configure(x => x.IsUnicode(true));
}

问题2. 数据库级联删除问题

抛出的异常类似于“Introducing FOREIGN KEY constraint ‘‘ on table ‘‘ may cause cycles or multiple cascade paths.”,解决方法:删除默认的一对多级联删除约定

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
}

问题3. 定义唯一约束

EF6中支持定义唯一约束,方法:对需要被定义为唯一约束的属性添加索引特性。

[System.ComponentModel.DataAnnotations.Schema.Index(IsUnique = true)]
public string Code { get; set; }

问题4. __Migrationhistory表中主键超出最大长度问题

自定义数据库配置类,该类继承于DbConfiguration,属于全局配置类,代码如下:

public class MySqlConfiguration : DbConfiguration
{
    public MySqlConfiguration()
    {
        SetHistoryContext("MySql.Data.MySqlClient", (conn, schema) => new MySqlHistoryContext(conn, schema));
    }
}

public class MySqlHistoryContext : HistoryContext
{
    public MySqlHistoryContext(DbConnection existingConnection, string defaultSchema)
        : base(existingConnection, defaultSchema)
    {
    }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<HistoryRow>().Property(h => h.MigrationId).HasMaxLength(100).IsRequired();
        modelBuilder.Entity<HistoryRow>().Property(h => h.ContextKey).HasMaxLength(200).IsRequired();
    }
}
时间: 2024-10-25 14:14:53

EF6连接MySQL若干问题汇总的相关文章

VS2015 +EF6 连接MYSQL数据库生成实体

VS2015 +EF6 连接MYSQL数据库生成实体   已安装软件:VS2015 XAMPP Control Panel(Mysql服务器) SQLyog(Mysql 客户端) 使用时: 使用EF设计器 此时此刻,发现二逼了,咋没有mysql????(好吧,上图是用的别人的,本机已经木有这个没有mysql的界面了) 好吧,下面重点: 需要下载安装: 1:mysql-for-visualstudio-1.2.6.msi http://dev.mysql.com/downloads/file/?i

使用EF6连接MySQL

今天在项目中使用EF6连接MySQL时费了一些周折,特此做一下记录. 之前在用EF4的时候,只需要使用NuGet安装好EF4,建好继承自DbContext的上下文类就可以直接使用了.但是这一次使用EF6,始终报这个错误: 经网上查询得知,除了要安装mysql.data.entities外 还需要在Web.config中添加以下代码

VS2017 + EF6连接MySql

原地址:https://blog.csdn.net/mzhifa/article/details/80999105 VS2017 + EF6连接MySql ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,不仅支持SQL Server,还支持MySQL.Oracle等数据库. 接下来给大家讲解EF6+MYSQL具体的配置流程,以及配置过程中一些常见错误的解决方法. 开发环境:Win10 + VS201

在Visual studio 2017中使用EF6连接MySQL

在Visual studio 2017中使用EF6连接Mysql ADO.NET Entity Framework 是微软以 ADO.NET 为基础所发展出来的对象关系对应 (O/R Mapping) 解决方案,不仅支持SQL Server,还支持MySQL.Oracle等数据库. 在本文中使用 Entity Framework 6 框架,来映射MySQL数据实体. 一.在VS2017中,通过Nuget安装插件 1. EntityFramework 6.2.0 2. Mysql.data.ent

MVC4使用EF6连接mysql数据库

1.需要安装MySql.Data.Entity.EF6,此dll可以在项目-->管理NuGet程序包里联机搜索MySql.Data.Entity.EF6并安装即可2.连接字符串需要添加providerName="Mysql.Data.MySqlClient"3. 将 <providers>     <provider invariantName="System.Data.SqlClient" type="System.Data.En

[原创]VS2013 EF6连接MySql需要几步?

精简的美丽...... 1.安装mysql server下载地址 http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.21-winx64.zip注意:此url中除去文件名的部分是几乎所有文件下载的路径下面的文章可以借鉴 [MySQL]教你一步一步在Windows 8.1系统上配置免安装版mysql-5.6.21-winx64 2.安装MySql的VS插件(版本请下载最新版)mysql-for-visualstudio-1.2.3.msi 3.安装

EF6连接MySql,网上那些所谓解决方案提供者你们够了

就一句话,MySql.Data和mysql.Data.Entity.EF6(版本6.9.7),如果你们在引用这两个dll以后,一定要编译生成一下,否则,在添加数据模型时将永远被提示,“...找不到进行数据连接所需的与此版本兼容的实体框架数据库提供程序”.什么App.Config文件里的配置都是自动生成的,<provider>不用改,只要版本号对,一般不会出问题.

VS2013 EF6连接MySql

1.安装mysql server下载地址 http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.21-winx64.zip 2.安装MySql的VS插件(版本请下载最新版)mysql-for-visualstudio-1.2.3.msi 3.安装用于.net连接程序mysql-connector-net-6.9.4.msi 4.使用Nuget Packages(Nuget 程序包管理器)安装EF使用命令 Install-Package Entity

VS2013使用EF6连接MySql

前提:a.安装MySql的VS插件(版本请下载最新版) 我用的是:mysql-for-visualstudio-1.1.4 b.安装用于.net连接程序  mysql-connector-net-6.8.3 1.新建项目 2.打开管理NuGet程序包-分别安装EntityFramework.MySQL.Data.Entities 3.修改Web.config文件,在<providers></providers>中增加 <provider invariantName="