Pregunta

He estado leyendo y viendo videos sobre MVC y estoy empezando a conseguir un poco confundido.El simple tutoriales son demasiado simples y parecen consistir únicamente en una sola base de datos de la tabla.Whoopty doo!

La avanzada tutoriales asumir una gran cantidad de conocimientos, y tengo problemas en el seguimiento de aquellos.Por no mencionar, hay 15 maneras de modelar la base de datos y de la que nadie quiere explicar por qué lo hacen de esta manera o de aquella forma.

Por lo tanto, estoy buscando un simple tutorial o explicación de lo que el proceso va a ir a través de un diseño de un simple CRUD aplicación que involucra muchos-a-muchos de relación, se explica a continuación.Puede que no haya proporcionado suficiente información, así que siéntase libre de solicitar actualizaciones.

Actualizaciones: Yo estaría interesado en ver un Linq To Sql solución.

Me fui a través de la nerddinner PDF y mi modelo tiene que ser un poco diferente de la suya.Quiero muchos-a-muchos mi relación con la Comida y mis Ingredientes.Él sólo usa un 1-a-muchos con su Cena y Respuestas.Además, nunca se muestra cómo se adjunta la puedes enviar a su Cena modelo.Este es esencialmente el problema que estoy teniendo.¿Por qué es que la Comida en mi modelo no contiene una lista de Ingredientes?Tengo el adecuado claves foráneas en el lugar.No estoy seguro de dónde o cómo iba yo a lo que puedo acceder a los ingredientes a través de la Comida del modelo si quería imprimir en la vista de detalles o algo.

Las comidas

  • Id
  • Título
  • Descripción

Ingredientes

  • Id
  • Nombre

Comidas-Ingredientes

  • Id_Meal
  • Id_Ingredient
¿Fue útil?

Solución

Espero que hayas encontrado algo, pero para los demás que todavía podrían estar buscando, eche un vistazo a este:

https://github.com/workshirt/wscoachmarksview

Otros consejos

Tengo muchos ejemplos de este tipo de relación en mi proyecto actual. Estoy usando MVC 1 y LINQ-to-SQL. Pasé exactamente la misma frustración, ya que ahora estás experimentando. El mayor obstáculo es aceptar el hecho de que Linq a SQL no gestiona directamente las relaciones de muchos a muchos, sino comprender que no es necesario para obtener la información que necesita.

Comencemos con la R en Crud, ya que es la forma más fácil de demostrar lo que hay que hacer. Ahora, en este punto, recomendaría crear un modelo de vista fuertemente tipado, solo para aliviar la tarea de agregar sus datos de vista y simplificar la asignación de los datos de la comida a la vista de detalles:

public class MealDetailsViewModel
{
    public int Id_Meal { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }

    private List<Ingredient> _Ingredients = new List<Ingredient>();
    public List<Ingredient> Ingredients
    {
       get { return _Ingredients; }
       set { _Ingredients = value; }
    }
}

Para recuperar una comida y su lista de ingredientes, aquí está el método del controlador:

public ActionResult Details (int mealID)
{
    Meal result = DataContext.Meals
        .Where(a => a.Id_Meal == mealID)
        .SingleOrDefault();

    MealDetailsViewModel viewModel = new MealDetailsViewModel
    {
        Id_Meal = result.Id,
        Title = result.Title,
        Description = result.Description,
        Ingredients = result.Meals-Ingredients
            .Where(a => a.Id_Meal == mealID)
            .Select(a => a.Ingredient)
            .ToList()
    };

    return View(viewModel);
}

Como se dijo anteriormente, Linq a SQL no admite directamente las relaciones de muchos a muchos, por lo que no se puede ver la entidad de ingredientes directamente de la comida. Sin embargo, como se ilustra en el método de acción del controlador, puede acceder a la entidad de asociación (ingredientes de comidas) de la entidad de la comida. Desde la entidad de asociación, puede acceder a la entidad de ingredientes para obtener la lista de ingredientes. La vista se vería algo así:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="ViewPage<MealDetailsViewModel>" %>

<asp:Content ID="mainMealDetails" ContentPlaceHolderID="MainContent" runat="server">
    <h2><%= Model.Title %></h2>
    <h3><%= Model.Description %></h3>
    <br />
    <p>Ingredients:</p>
    <ul>
        <% foreach(Ingredient item in Model.Ingredients) 
           { %>
            <li><%= item.Name %></li>
        <% } %>
    </ul>
    <br />
    <%= Html.ActionLink("Update", "Edit", new { id = Model.Meal_ID }) %> |
    <%= Html.ActionLink("Add Ingredient", "IngredientCreate", new{ id = Model.Meal_ID }) %> |
    <%= Html.ActionLink("Delete", "Delete", new { id = Model.Meal_ID }) %> |
    <%= Html.ActionLink("Back to Menu List", "Index") %>
</asp.Content>

Si el esquema de su base de datos está configurado correctamente con las relaciones de clave extranjera que necesita, este enfoque debe darle el resultado que está buscando.

Recomiendo encarecidamente el 'Pro ASP.NET MVC Framework' de Steve Sanderson. Es, con mucho, la mejor guía MVC de ASP.NET que he visto, y en mi opinión mucho mejor que el libro de Wrox del equipo de MSOFT. Vale la pena el dinero si quieres entrar en él.

Enlace de Amazon

Usted no va a obtener todo en la placa de plata.Usted tendrá que ir a través de hell of wtf a ti mismo.

Es como conmigo y Ruby on Rails - cada vez que veo fragmento del ejemplo o de la aplicación de ejemplo - parece super duper simple y limpio.Pero - porque en realidad nunca he creado nada de mí, no tengo ideas con lo que empezar.

Tan sólo tienes que ir por algunos libros y aplicaciones de ejemplo.A continuación, crear algo.Este sentimiento (con lo que para empezar, la estructura, etc.) desaparecerá muy pronto.

Más tarde - no olvides la segunda extrema sensación de que sabes todo lo que tienes que saber.:)


Y sí - no proporcionar la información suficiente.Hay varios caminos para ir a por el.Yo creo que no quiere oír avanzado dominio controlado por los enfoques de diseño.Ni usted desea ver Sql justo al lado de marcado html.Sólo tú sabes 'el contexto"y puede decidir lo que es necesario, bueno y qué no lo es.

Puede usar las vistas para ver los elementos en una lista o biblioteca que sean más importantes para usted o que se ajusten a un propósito particular. Por ejemplo, puede crear vistas de los archivos en una biblioteca que se aplican a un departamento específico o los elementos en una lista que fueron creados por una persona específica. Las vistas están disponibles para la lista o la biblioteca que las creas.

Cada lista o biblioteca tiene al menos una vista. En el navegador, puede modificar estas vistas y crear nuevas vistas. Por ejemplo, una lista de tareas incluye varias vistas, como todas las tareas y mis tareas. Puede modificar estas vistas cambiando cómo se ordenan los elementos de la lista. O podría crear una nueva vista que muestra solo las tareas que están incompletas.

Para su requisito, puede hacerlo -> Modificar la vista -> En estilo -> Puede seleccionar los estilos que desea.

Eche un vistazo al siguiente enlace para obtener más detalles sobre los estilos en la vista de la lista / Biblioteca

cree, cambie o elimine una vista de una lista o biblioteca

En el enlace anterior, desplácese hacia abajo y busque la sección llamada "Estilo" en "Configuración para las vistas" y puede ayudarlo a realizar su requisito.

Encuentro que Steven Walther tiene algunos excelentes tutoriales para ASP.NET MVC versión 1, suponiendo que esté trabajando con la primera versión, ya que todavía no se lanza la versión 2 (RC actualmente). El primer tutorial de trabajo comienza aquí Y deberías poder encontrar el resto desde allí. También tiene muchos buenos consejos si busca en su blog en ese sitio.

Además, la mayoría de estos tutoriales cubren VB y C#, si eso es importante para usted.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top