Как сохранить связанные сущности на объекте при возврате из представления ASP.NET MVC - PullRequest
1 голос
/ 08 марта 2009

Я работаю над приложением ASP.NET MVC RC2 с использованием Entity Framework.

Это моя диаграмма сущностей.

В моем хранилище я получаю следующую сущность:

public Product GetProduct(int id)
{
    return (from c in _entities.ProductSet.Include("User")
           where c.Id == id
           select c).FirstOrDefault();
}

Мой взгляд:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SampleApp.Models.Product>" %>

Изменить продукт

<h2>Edit product</h2>

<%= Html.ValidationSummary("Edit was unsuccessful. Please correct the errors and try again.") %>

<% using (Html.BeginForm()) {%>

    <fieldset>
        <legend>Fields</legend>
        <p>
            <label for="Id">Id:</label>
            <%=  Model.Id %>
        </p>
        <p>
            <label for="Title">Title:</label>
            <%= Html.TextBox("Title", Model.Title) %>
            <%= Html.ValidationMessage("Title", "*") %>
        </p>
        <p>
            <label for="Body">Body:</label>
            <%= Html.TextBox("Body", Model.Body) %>
            <%= Html.ValidationMessage("Body", "*") %>
        </p>
        <p>
            <input type="submit" value="Save" />
        </p>
    </fieldset>

<% } %>

<div>
    <%=Html.ActionLink("Back to List", "Index") %>
</div>

Проблема и мой вопрос: когда сущность «Продукт» возвращается из представления поста, связанная сущность «Пользователь» становится пустой. Почему это так и есть ли способ обойти это?

Ответы [ 2 ]

4 голосов
/ 08 марта 2009

Поскольку productToEdit - это новый объект продукта, заполняемый из полей формы, и если у вас нет полей для пользователя, как бы вы заполнили сущность User

Для «обходного пути» сначала получите продукт из БД, отредактируйте его с помощью отредактированных полей в productToEdit и сохраните в db

1 голос
/ 08 марта 2009

Вы также можете использовать собственный ModelBinder, который понимает вашу модель и стратегию сохранения, чтобы полностью загрузить график обратно в память.

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