我正在开始使用ASP.NET MVC4 CodeFirst方法创建一个简单的网站。该网站是围绕能够注册,发布帖子等的用户构建的。现有的UserProfile
类已针对住宿其他字段进行了修改(例如:FirstName,LastName等)。
当我运行网站时,我遇到了类似的错误:
Invalid column name 'FirstName'.
Invalid column name 'LastName'.
Invalid column name 'Phone'.
我认为这是因为数据库在更新模型时未更新。所以我在Application_Start()
中的Global.asax
上设置了以下内容,目的是始终对数据库进行droppnng(至少直到我得到它为止)。
protected void Application_Start()
{
Database.SetInitializer(new DropCreateDatabaseAlways<UsersContext>());
//Other default generated stuff below...
}
我也尝试了DropCreateDatabaseIfModelChanges
,但两种方法都没有丢弃数据库。
这不可能吗?为什么?我做错了吗?
我相信可以将信息存储在不同的表中并将其链接到此表,但我更喜欢将其保存在一个表中。
将UserProfiles
添加到网站上下文也是一个坏主意(比方说:DatabaseContext
(其他实体如帖子,评论等)并更改AccountsController
即可使用DatabaseContext
代替UsersContext
?
提前致谢。
答案 0 :(得分:1)
您是否在Package Manager控制台中运行Enable-Migrations
?您应该在项目中看到一个迁移文件夹,其中包含configuration.cs文件,确保您已启用自动迁移。
public Configuration(){
AutomaticMigrationsEnabled = true;
//if you drop columns - consider this carefully...
AutomaticMigrationDataLossAllowed = true;
}