понедельник, 20 февраля 2012 г.

MVC. Общаемся с БД 2

Допилим наше приложение. Чтобы как тестовое использовать можно было, проверку написанного устраивать без того, чтобы еще и в SQL Server Managеment Studio лазить.

Итак, что мы умеем? Мы умеем получать список авторов, добавлять новых, редактировать и удалять старых.

Но этой информации «маловато будет», если мы хотим менять некие связи внутри базы данных, и видеть их изменение. Поэтому вытащим на основную информацию еще и список всех книг, написанных автором.

Вначале допиливаем View под названием «Индекс» - добавляем в заголовки новый («Его книги») и в тело таблицы:

    <tbody>
        @foreach(var a in Model)
        {
            <tr>
                <td>@a.LastName</td>
                <td>@a.FirstName</td>
                <td>@Html.ActionLink("Редактировать", "Edit", new {id = a.Id})</td>
                <td>@Html.ActionLink("Удалить", "Delete", new {id = a.Id})</td>              
                <td>@a.Books</td>
            </tr>
        }
    </tbody>

Теперь подредактируем контроллер, метод Index.


В нем мы получаем уже не объект типа «автор», а новый объект, создаем для него отдельный класс рядом с контроллером:


И вносим туда все геттеры и сеттеры, необходимые для получения не только имени и фамилии автора, но и его книг:

namespace Books.Web.Models
{
    public class AuthorListRecord
    {
        public int Id { get; set; }
        public string FirstName { get; set; }
        public string LastName { get; set; }
        public string Books { get; set; }
        
    }
}

Таким образом, мы получили всех авторов из таблицы авторов и с помощью
Books = string.Join(", ", a.BookAuthorships.Select(b => b.Book.name))

Вытащили все книги, написанные данным автором, из промежуточной таблицы.
F5 – стартуем приложение J

Комментариев нет:

Отправить комментарий