【发布时间】:2017-11-30 09:47:52
【问题描述】:
我有一个网站。首先使用代码。我的 add-migration 命令产生了以下代码。
public partial class StudentEntity : DbMigration
{
public override void Up()
{
CreateTable(
"dbo.Student",
c => new
{
id = c.Int( nullable: false, identity: true),
name = c.String(),
})
.PrimaryKey(t => t.id);
}
现在我想部署我的站点,所以当站点第一次运行时,我希望在 DB(SQL 服务器)中生成 Student 表。
现在,当我运行该站点时,它不会创建任何表。我怎样才能做到这一点?我不想用任何种子数据初始化
我的数据库上下文类
public partial class flagen:DbContext
{
public flagen() : base("name=cf2")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
}
//old entity
public virtual DbSet<flag> flags { get; set; }
//new entity
public virtual DbSet<Student> students { get; set; }
}
然后我尝试使用 Context 来创建表。它抛出错误“支持'flagen'上下文的模型自数据库创建以来已更改。考虑使用代码优先迁移来更新数据库” 我在 dbcontext 类中添加了以下两行
Database.SetInitializer<flagen>(null);
base.OnModelCreating(modelBuilder);
现在它显示“无效的对象名称学生”
任何有效的解决方案?
【问题讨论】:
-
EF 在站点启动时不会初始化,它会在您第一次尝试使用上下文时运行。你试过这样做吗?
-
@DavidG 当我第一次尝试使用上下文时,它给了我以下错误:“支持'flagen'上下文的模型自数据库创建以来发生了变化。考虑使用代码优先迁移来更新数据库( go.microsoft.com/fwlink/?LinkId=238269)。”
-
现在这是一个不同的问题......
-
@DavidG 更新问题
-
现在我们有第三个不同的问题。你不能一直这样改变你的问题。
标签: c# entity-framework ef-code-first