gpt4 book ai didi

c# - Dot Net Entity Framework 数据库更新不会在 mysql 数据库中创建表

转载 作者:可可西里 更新时间:2023-11-01 06:30:02 24 4
gpt4 key购买 nike

我使用 MySql 作为官方连接提供程序的数据库。我正在 mac 上使用下一个项目示例 (asp.net core 1.0) 进行尝试:

public class BloggingContext : DbContext
{
public BloggingContext(DbContextOptions<BloggingContext> options)
: base(options)
{ }

public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
}

public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }

public List<Post> Posts { get; set; }
}

public class Post
{
public int PostId { get; set; }
public string Title { get; set; }
public string Content { get; set; }

public int BlogId { get; set; }
public Blog Blog { get; set; }
}

在我的 Startup.cs 中

    public void ConfigureServices(IServiceCollection services)
{
var connection = @"server=localhost;userid=efcore;port=3306;database=blogsFinal;sslmode=none;";
services.AddDbContext<BloggingContext>(options => options.UseMySQL(connection));

// Add framework services.
services.AddMvc();
}

在我的 project.json 中我还添加了

"dependencies": {
...
"MySql.Data.EntityFrameworkCore": "7.0.5-ir21",

"Microsoft.EntityFrameworkCore.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
}
}

  "tools": {
...,
"Microsoft.AspNetCore.Server.IISIntegration.Tools": "1.0.0-preview2-final"
},

当我运行 dotnet ef migrations add v1 时,工作正常并创建了迁移文件,但是当我执行 dotnet ef database update 时,数据库被创建但表没有并且抛出这个输出

System.NotImplementedException: The method or operation is not implemented.
at MySQL.Data.EntityFrameworkCore.Migrations.Internal.MySQLHistoryRepository.get_ExistsSql()
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.Exists()
at Microsoft.EntityFrameworkCore.Migrations.HistoryRepository.GetAppliedMigrations()
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
at Microsoft.EntityFrameworkCore.Tools.Cli.DatabaseUpdateCommand.<>c__DisplayClass0_0.<Configure>b__0()
at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
The method or operation is not implemented.

最佳答案

异常(exception)说明了这一点。 Oracle 的官方 MySQL 提供程序尚不支持迁移或脚手架。

它只会在第一次执行 context.Database.EnsureCreated() 时创建数据库。之后所做的任何更改都不会应用。您必须删除整个数据库并创建一个新数据库,从而丢失所有数据。

感谢 Oracle ;)

更新

随着 7.0.6-IR31 的发布 package迁移确实有效,但脚手架仍然无效。

关于c# - Dot Net Entity Framework 数据库更新不会在 mysql 数据库中创建表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39640072/

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