0

我使用 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; }
}

}

然后

  1. 我发现我需要varchar(max)为 column生成的数据库Title。我将其修改为varchar(500). ( alter table todoitems alter column Title varchar(500) not null) Web 应用程序可以毫无问题地运行。
  2. 然后我在类中添加一个新属性(取消注释 Test 属性)。运行 Web 应用程序时出现以下异常。

自数据库创建以来,支持“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));
    }
  1. 我试图修改数据库表(alter table todoitems add Test varchar(200)),但仍然引发异常。

是否可以更改模型类并修改(通过 VisualStudio 或手动)表而不是重新创建表?(我想在数据库表上保留我的手动更改。)

4

1 回答 1

1

您正在寻找的内容被称为Code First Migrations- 您可以在 MSDN 上看到一个很棒的演练:http: //msdn.microsoft.com/en-us/data/jj591621.aspx

于 2013-02-01T05:00:02.387 回答