【发布时间】:2015-02-04 03:18:19
【问题描述】:
我正在与其他学生一起使用 Team Foundation Server 在线作为源代码,我们的客户是 Visual Studio。
当我浏览我的应用程序或单击与我的数据库实体相关的任何内容时,我是唯一一个遇到以下异常错误的人:
“EntityFramework.dll 中出现‘System.InvalidOperationException’类型的异常,但未在用户代码中处理。”
我尝试更新数据库,但我也收到此错误:
“数据库中已经有一个名为‘Post’的对象。”
我也做了 Add-migration “新迁移的名称”,但我一直得到这个:
“无法生成显式迁移,因为以下显式迁移处于挂起状态:[201502020217243_InitialCreate]。在尝试生成新的显式迁移之前应用挂起的显式迁移。” InitialCreate.cs 的代码:
namespace Aliens.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class InitialCreate : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Post",
c => new
{
PostID = c.Int(nullable: false, identity: true),
Alias = c.String(),
Location = c.String(),
PostDate = c.DateTime(nullable: false),
PostTitle = c.String(),
PostMessage = c.String(),
})
.PrimaryKey(t => t.PostID);
CreateTable(
"dbo.Profile",
c => new
{
ProfileID = c.Int(nullable: false, identity: true),
FirstName = c.String(),
LastName = c.String(),
ProfileAlais = c.String(),
})
.PrimaryKey(t => t.ProfileID);
AddColumn("dbo.Alien", "Post", c => c.String());
}
public override void Down()
{
DropColumn("dbo.Alien", "Post");
DropTable("dbo.Profile");
DropTable("dbo.Post");
}
}
}
Configuration.cs 的代码是:
namespace Aliens.Migrations
{
using System;
using System.Data.Entity;
using System.Data.Entity.Migrations;
using System.Linq;
internal sealed class Configuration : DbMigrationsConfiguration<Aliens.DAL.AlienContext>
{
public Configuration()
{
AutomaticMigrationsEnabled = false;
ContextKey = "Aliens.DAL.AlienContext";
}
}
}
【问题讨论】:
-
我创建了一个空的 Up() 方法,注释掉了真正的 InitialCreat.cs,运行它,现在我可以创建下一个迁移,但是每当我点击任何东西时,我都会得到相同的 System.InvalidOperationException与数据库有关。请需要帮助!
-
报错说明当你尝试创建表Post时,它已经在数据库中了。所以先检查是否没有名称为Post的表,然后再创建它。
-
我终于解决了这个问题,正如我上面描述的那样,我为每个待处理的迁移做了什么。然后我使用这个可爱的命令 Add-Migration Initial -IgnoreChanges。
标签: c# asp.net-mvc entity-framework