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)列用に生成されたデータベースが必要であることがわかりましたTitle。に変更しましたvarchar(500)。(alter table todoitems alter column Title varchar(500) not null)Webアプリは問題なく実行できます。
  2. 次に、クラスに新しいプロパティを追加します(Testプロパティのコメントを解除します)。Webアプリを実行すると、次の例外が発生しました。

データベースが作成されてから、「TodoItemContext」コンテキストをサポートするモデルが変更されました。Code First Migrationsを使用してデータベースを更新することを検討してください(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 に答える