【发布时间】:2016-07-24 03:17:25
【问题描述】:
我创建了一个新的 ASP.Net Web 应用程序并在其上启用了迁移。我运行了add-migration initial,而initial 迁移实际上具有所有用于身份验证的默认表(dbo.AspNetRoles、dbo.AspNetUserRoles 等)。但是,当我创建自己的上下文并向其中添加实体模型时,我无法通过迁移来确认该模型。也就是说,当我运行add-migration added-watchedgame-model 时,我只会得到一个“空”迁移文件。那么我做错了什么?我的 DbContext 是否必须以某种方式引用? Entity Framework 只能处理 1 个 dbcontext 的迁移吗?
ReleaseDateMailerDBContext.cs:
using System.Data.Entity;
using WebApplication4.Models;
namespace WebApplication4.DataAccess
{
public class ReleaseDateMailerDBContext : DbContext
{
public ReleaseDateMailerDBContext() : base("DefaultConnection") { }
public DbSet<WatchedGameModel> WatchedGameModelSet { get; set; }
}
}
WatchedGameModel.cs:
using System.ComponentModel.DataAnnotations;
namespace WebApplication4.Models
{
public class WatchedGameModel
{
public int ID { get; set; }
[MaxLength(1024)]
public string URL { get; set; }
public string Email { get; set; }
public bool EmailSent { get; set; }
}
}
“空”迁移文件:
namespace ReleaseDateMailer.Migrations
{
using System;
using System.Data.Entity.Migrations;
public partial class addedwatchedgamemodel : DbMigration
{
public override void Up()
{
}
public override void Down()
{
}
}
}
【问题讨论】:
-
我认为您需要运行
update-database以便框架将表添加到数据库中。 -
@Ingenioushax 试了一下,没有运气。
-
您需要运行 enable-migrations 命令来初始化数据库上的代码优先迁移
-
@pquest 已经做到了,这就是我已经获得 dbo.AspNetRoles 表的方式
-
@AdamR.Grey :您的意思是创建了 AspNetRoles 表吗?在那种情况下,您是否创建了这个新文件
ReleaseDateMailerDBContext并在那里添加了 DBSet。您必须查找文件ApplicationDbContext,在那里您必须更新新的 DBSet。
标签: c# asp.net-mvc entity-framework entity-framework-migrations