【发布时间】:2013-02-01 03:45:21
【问题描述】:
我使用新的 Asp.Net MVC 4 单页应用程序创建了一个项目。我运行了 Web 应用程序并创建了默认的 Sql Server localDB 数据库,以及以下类的表。
public class TodoItem
{
public int TodoItemId { get; set; }
[Required]
public string Title { get; set; }
public bool IsDone { get; set; }
// public string Test { get; set; }
[ForeignKey("TodoList")]
public int TodoListId { get; set; }
public virtual TodoList TodoList { get; set; }
}
}
然后
- 我发现我需要为
Title列生成varchar(max)的数据库。我将其修改为varchar(500)。 (alter table todoitems alter column Title varchar(500) not null) Web 应用程序可以毫无问题地运行。 - 然后我在类中添加一个新属性(取消注释 Test 属性)。运行网络应用时出现以下异常。
支持“TodoItemContext”上下文的模型在创建数据库后发生了变化。考虑使用 Code First 迁移来更新数据库 (http://go.microsoft.com/fwlink/?LinkId=238269)。
在
[Authorize]
public class TodoListController : ApiController
{
private TodoItemContext db = new TodoItemContext();
// GET api/TodoList
public IEnumerable<TodoListDto> GetTodoLists()
{
return db.TodoLists.Include("Todos")
.Where(u => u.UserId == User.Identity.Name)
.OrderByDescending(u => u.TodoListId)
.AsEnumerable()
.Select(todoList => new TodoListDto(todoList));
}
- 我尝试修改数据库表(
alter table todoitems add Test varchar(200)),但仍然引发异常。
是否可以更改模型类并修改(通过 VisualStudio 或手动)表而不是重新创建表? (我想在数据库表上保留我的手动更改。)
【问题讨论】:
标签: c# asp.net-mvc-4 ef-code-first