MVC, плохая практика - не избавляться от объекта Entities, чтобы вы могли использовать его для детализации значений внешнего ключа? - PullRequest
1 голос
/ 28 января 2011

Я новичок в MVC. В уроках, которые я прочитал, говорится, что хорошей практикой является удаление объекта сущностей после его передачи в представление. Вот так ...

using(MyProjectEntities db = new MyProjectEntities)
{
    return View(db.PersonAddresses.ToList());
}

Однако я не хочу просто отображать идентификаторы Person и записи Address, которые связаны в таблице PersonAddress. Мне нужен весь шебанг, и я получаю ошибку, когда делаю следующее на мой взгляд.

<% foreach (var item in Model) { %>

    <tr>
        <td>
            <%: item.Person.LastName + ", " + item.Person.FirstName %>
        </td>
        <td>
            <%: item.Address.AddressLine1+ "<br />" + item.Address.AddressLine2 %>
        </td>
        <td>
            <%: item.Room.RoomName %>
        </td>
        <td>
            <%: String.Format("{0:g}", item.Date) %>
        </td>
    </tr>

<% } %>

Однако, если сделать

MyProjectEntities db = new MyProjectEntities;
return View(db.PersonAddresses.ToList());

Мой вид работает нормально.

Есть ли лучший способ передать эти значения в представление, где я могу правильно распоряжаться объектом Entities?

Ответы [ 2 ]

2 голосов
/ 28 января 2011

Один из способов - «загрузить» данные, добавив .Include в запрос LINQ, это предварительно загружает указанные данные, поэтому они готовы к работе.

0 голосов
/ 28 января 2011

Лучше не получать доступ к вашему уровню данных напрямую с контроллеров.Я хотел бы создать отдельный уровень бизнес-логики или сервисный уровень и вызывать его с контроллеров, вместо вызова уровня доступа к данным с ваших контроллеров.Таким образом, ваш уровень доступа к данным не доступен напрямую вашему уровню пользовательского интерфейса.Этот вопрос будет спорным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...