实体框架数据库错误

Posted

技术标签:

【中文标题】实体框架数据库错误【英文标题】:Entity Framework Database errors 【发布时间】:2015-03-23 13:23:03 【问题描述】:

我在 Visual Studio 2013 中的 .NET MVC 项目中的数据库存在问题。我无法通过迁移更新数据库,我更改了模型并更新了数据库,但没有任何改变,所以我删除了所有数据库和迁移重建项目,但是现在当我输入控制台启用迁移时,我有这个

在程序集“Ogloszenia”中发现了多个上下文类型。 要为 Ogloszenia.Models.UsersContext 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.UsersContext。 要为 Ogloszenia.Models.Plik+BazaPlikow 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.Plik+BazaPlikow。 要为 Ogloszenia.Models.Skarga+BazaSkarg 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.Skarga+BazaSkarg。 要为 Ogloszenia.Models.SlowaZakazane+BazaSlowZakazanych 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.SlowaZakazane+BazaSlowZakazanych。 要为 Ogloszenia.Models.Kategorie+BazaKategorii 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.Kategorie+BazaKategorii。 要为 Ogloszenia.Models.Ogloszenie+BazaOgloszen 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.Ogloszenie+BazaOgloszen。 要为 Ogloszenia.Models.Ustawienie+BazaUstawien 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.Ustawienie+BazaUstawien。 要为 Ogloszenia.Models.Wiadomosc+BazaWiadomosci 启用迁移,请使用 Enable-Migrations -ContextTypeName Ogloszenia.Models.Wiadomosc+BazaWiadomosci。`

做什么?

【问题讨论】:

您的项目中是否有多个 DbContext?如果是这样,请完全按照消息告诉您的操作 是的,我的上下文很少,但是当我输入所说的内容时,它不会创建新数据库 Enable-migrations 不会创建任何数据库,它只会设置迁移代码。您使用Update-Database 创建数据库或更新到特定迁移。 您的问题与您遇到的问题完全不同,根据您提供的信息,这里的任何人都不可能可以帮助您。请在提问之前思考您的问题,一旦编写完成,想象您不是该代码的所有者,您从未见过该代码,有人来问您这个问题:您能帮忙吗? ? @Klapek 请参阅本教程以了解多个 dbContext:dotnet-tricks.com/Tutorial/entityframework/… 和此答案:***.com/a/13477276/809357 【参考方案1】:

首先,使用您的 DbContexts 中的所有 DbSet 创建一个单独的 class MigrationDbContext

    然后仅为它启用迁移。为您跳过enable-migrations 生产 DbContexts,因为 EF 本身不支持 多个 DbContext 的迁移。 然后应用命令add-migration。 然后应用命令update-migration

最常用的命令名称和参数的快速参考是here

【讨论】:

好的话题已关闭。我在 pendrive 上找到了旧的数据库副本,它可以工作。我不想知道为什么它不起作用,这是我在 VS 的最后一份工作。 这不是真的。最新版本的 EF 支持多上下文迁移:dotnet-tricks.com/Tutorial/entityframework/… 确实如此。我检查了你的链接。最新的 EF 版本与之前的版本相比没有显着变化,用于迁移多个 DbContext。几个 DbContext 迁移的主要问题是常见的 DbSet,可以在几个 DbContext 中解决。当生成*.cs 迁移文件时,您应该在Up() 方法中手动注释掉这个几乎已经内置在DataBase 中的常用表。在这个简单的教程中,作者只注释掉了一个表,但在生产中它可能是几十个带有外键的表——这已经变成了地狱。而且它看起来不像是智能原生支持

以上是关于实体框架数据库错误的主要内容,如果未能解决你的问题,请参考以下文章

尝试通过实体框架更新数据库对象时对象已存在错误

实体框架数据模型的数据源错误

实体框架代码首先尝试打开错误的数据库

添加新实体标量时实体框架 4 映射片段错误

实体框架核心错误:使用服务器“localhost”上的数据库“”连接发生错误

在实体框架中使用更新数据库时子查询返回超过 1 个值错误