gpt4 book ai didi

c# - 指定的 key 太长;最大 key 长度为 767 字节 Entity Framework 6 中的 Mysql 错误

转载 作者:IT老高 更新时间:2023-10-28 23:58:56 25 4
gpt4 key购买 nike

我已经开始使用 Visual Studio 2012 开发 Asp.net Mvc-5 应用程序。所以我从 nuget 下载了 Entity Framework-6 和 MySQL 6.8.3.0。当我尝试使用 db Context 命令创建数据库时

dbContext.Database.CreateIfNotExists();

抛出这个异常。

Specified key was too long; max key length is 767 bytes

我已经对其进行了搜索,但找不到任何解决方案。我在搜索过程中得到的一件事,这可能是 Unicode 字符问题。我不知道如何处理这个问题。

更新

我正在使用以下配置

<configuration>
<configSections>
<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="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6" />
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.8.3.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>

我的数据库上下文类。我已经删除了所有模型,只保留了一个模型

public class MyContext : DbContext
{
public MyContext()
: base("myconn")
{
this.Configuration.ValidateOnSaveEnabled = false;
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}

public DbSet<ModelOne> ModelOne { get; set; }

}

模型类

public class  ModelOne
{
[Key]
public int CreatedId { get; set; }
public Nullable<int> UserId { get; set; }
public Nullable<DateTime> Date { get; set; }
public string Description { get; set; }
}

谁能帮我解决这个问题?

谢谢。

最佳答案

我已经更改了 DbContext 的 DbConfigurationType。

从这个链接获得 stackoverflow

现在可以正常使用了

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
public class MyContext : DbContext
{
public MyContext()
: base("myconn")
{
this.Configuration.ValidateOnSaveEnabled = false;
}

static MyContext()
{
DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration());
}

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();
base.OnModelCreating(modelBuilder);
}

public DbSet<ModelOne> ModelOne { get; set; }

}

关于c# - 指定的 key 太长;最大 key 长度为 767 字节 Entity Framework 6 中的 Mysql 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24981593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com