| Суббота, 9 марта, 2013
Метки: ASP.NET MVC, ASP.NET Web API, Entity Framework, Knockout Комментарии: 0
В созданном проекте папка Models содержит модели, которые используются на стороне сервера, существуют еще модели и на стороне клиента, но мы рассмотрим их позже.
Это модели базы данных для Entity Framework Code First. Эти модели содержат свойства, которые указывают друг на друга. TodoList имеет коллекцию элементов TodoItem, а каждый TodoItem ссылается обратно на своего родителя TodoList. Эти свойства называются свойствами навигации, и они представляют отношение один-ко-многим, то есть у одного todo-списка много todo-элементов.
В классе TodoItem используется атрибут [ForeignKey] , который указывает, что свойство TodoListId – внешний ключ для таблицы ToDoList и Entity Framework создаст этот ключ в базе данных.
[ForeignKey("TodoList")] public int TodoListId { get; set; } public virtual TodoList TodoList { get; set; }
Эти классы нужны для данных, которые будут отсылаться клиенту. Суффикс «Dto» означает "data transfer object" (объект передачи данных). Dto-классы определяют, как данные будут сериализовываться в JSON. Приведем основные причины использования этих dto-классов:
В одностраничном (SPA) шаблоне, dto-классы содержат те же данные, что и серверные модели. Но все же они уместны, потому что исключают цикличные ссылки свойств навигации и показывают пример использования dto-паттерна.
Этот файл содержит модели для системы управления учетными записями сайта. Класс UserProfile определяет схему для пользовательских профилей в базе данных (в шаблоне SPA, это только идентификатор и имя пользователя). Остальные классы нужны для регистрации и авторизации пользователей.
В одностраничном шаблоне используется платформа Entity Framework Code First. Разработка с этой платформой начинается с написания моделей в коде приложения, и затем Entity Framework, используя эти модели, создает базу данных. Но можно также использовать EF и с существующей базой данных (Database First).
Класс TodoItemContext в папке Models наследуется от DbContext. Этот класс связывает модели c Entity Framework. TodoItemContext содержит коллекции TodoItem и TodoList. Для получения данных из базы нужно просто написать LINQ-запрос к этим коллекциям. Например, вот так можно получить весь списки to-do для пользователя "testUser".
TodoItemContext db = new TodoItemContext(); IEnumerablelists = from td in db.TodoLists where td.UserId == "testUser" select td;
Элементы в коллекциях можно добавлять, изменять, удалять и потом сохранять изменения в базу данных.
Copyright © CodeHint.ru 2013-2024 (v2.4.7 - работает на Angular Universal)Калькулятор инвест-портфеля