-1

VS テンプレート (ここからhttp://www.asp.net/single-page-application )から MVC4 の単一ページ Web アプリケーションを見ていますが、ToDoLists の PUT アクションが新しい ToDoList を作成しているようです -どうしてこれなの?DTO クラス定義のコード:

public TodoList ToEntity()
        {
            TodoList todo = new TodoList
            {
                Title = Title,
                TodoListId = TodoListId,
                UserId = UserId,
                Todos = new List<TodoItem>()
            };
            foreach (TodoItemDto item in Todos)
            {
                todo.Todos.Add(item.ToEntity());
            }

            return todo;
        } 

コントローラーから:

public HttpResponseMessage PutTodoList(int id, TodoListDto todoListDto)
{           
    TodoList todoList = todoListDto.ToEntity();
    db.Entry(todoList).State = EntityState.Modified;
    db.SaveChanges();
    return Request.CreateResponse(HttpStatusCode.OK);
}

では、レコードを更新するには、新しいレコードを作成しますか? これがどのように機能するかについて少し混乱しています-明確化があれば素晴らしいでしょう。

4

1 に答える 1

1

この例では、コントローラはオブジェクトをデータベース オブジェクト タイプであるオブジェクトTodoListDtoに変換しています。TodoListDTO オブジェクトは Web ページから返されるため、Entity Framework が DbSet にアタッチして変更を保存できるように、適切な型に変更する必要があります。

ToEntityデータベースに新しいレコードを実際に作成するのではなく、新しいTodoListインスタンスを作成し、データベースに変更されてアタッチされます。

于 2013-03-01T03:03:34.457 に答える