Question

J'ai lu et regarder des vidéos sur MVC et je commence à être un peu confus. Les tutoriels simples sont beaucoup trop simples et ils semblent impliquer uniquement une table de base de données unique. doo Whoopty!

Les tutoriels avancés suppose beaucoup de connaissances est présent et j'ai du mal à suivre ceux-ci. Sans parler, il y a 15 façons de modéliser votre base de données et personne ne veut expliquer pourquoi ils le font de cette façon ou de cette façon.

Alors, je suis à la recherche d'un tutoriel simple ou une explication de ce processus, vous passeriez pour concevoir une application simple CRUD qui implique un grand nombre à plusieurs, expliqué ci-dessous. Je ne peux pas avoir fourni suffisamment d'informations pour se sentir libre de demander des mises à jour.

Mises à jour: Je serais intéressé à voir une solution LINQ to SQL.

Je suis passé par le PDF NerdDinner et mon modèle doit être un peu différent que le sien. Je veux un grand nombre à plusieurs avec mon repas et mes ingrédients. Il utilise seulement 1 à plusieurs avec son dîner et RSVPs. , Il ne montre jamais aussi comment il a attaché les RSVPs à son modèle de dîner. Ceci est essentiellement le problème que je vais avoir. Pourquoi est-ce que mon modèle de repas ne contient pas une liste des ingrédients? J'ai les clés étrangères appropriées en place. Je ne sais pas où ni comment je le configurer de sorte que je puisse accéder aux ingrédients à travers le modèle de repas si je voulais les imprimer sur les détails voir ou quelque chose.

Repas

  • Id
  • Titre
  • Description de

Ingrédients

  • Id
  • Nom

Repas-Ingrédients

  • Id_Meal
  • Id_Ingredient
Était-ce utile?

La solution

La seule solution que j'ai trouvé à l'aide PLINQ. Il est pas parfait pour autant que je sais bien.

J'utilise la "méthode de PLINQ" manuellement:

Autres conseils

J'ai beaucoup d'exemples de ce type de relation dans mon projet en cours. J'utilise MVC 1 et LINQ to SQL. Je suis passé par la même frustration alors que vous rencontrez maintenant. Le plus grand obstacle accepte le fait que LINQ to SQL ne gère pas directement beaucoup à plusieurs relations, mais comprendre qu'il n'a pas besoin d'afin d'obtenir les informations dont vous avez besoin.

Commençons par le R dans CRUD, car il est la meilleure façon de montrer ce qui doit être fait. Maintenant, à ce stade, je recommande de créer un modèle de vue fortement typée, pour faciliter la tâche de regrouper vos données de vue et de simplifier l'affectation des données de repas à la vue détaillée:

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; }
    }
}

Pour récupérer un repas et sa liste d'ingrédients, voici la méthode du contrôleur:

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);
}

Comme indiqué précédemment, LINQ to SQL ne supporte pas directement un grand nombre à plusieurs relations, ce qui est la raison pour laquelle vous ne pouvez pas voir l'entité Ingrédients directement à partir de repas. Cependant, comme illustré dans la méthode d'action du contrôleur, vous pouvez accéder à l'entité d'association (repas-ingrédients) de l'entité repas. De l'entité d'association, vous pouvez accéder à l'entité Ingrédients pour obtenir la liste des ingrédients. La vue ressemblerait à quelque chose comme ceci:

<%@ 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 votre schéma de base de données est correctement configuré avec les relations de clés étrangères dont vous avez besoin, cette approche devrait vous donner le résultat que vous êtes à la recherche.

Vous n'obtiendrez pas tout sur la plaque d'argent. Vous devrez passer par vous-même hell of wtf.

Il est comme avec moi et Ruby on Rails - chaque fois que je vois extrait de l'échantillon ou de l'application de l'échantillon - il semble super duper simple et soigné. Mais - parce que je ne l'ai jamais fait quoi que ce soit créé moi-même, je suis pas d'idées avec ce même pour commencer

.

- juste passer par quelques livres et sample . Puis - créer quelque chose. Ce sentiment (avec quoi commencer, comment structurer etc.) disparaîtra très bientôt.

Par la suite - ne pas oublier deuxième extrême - le sentiment que vous savez tout ce que vous devez savoir. :)


Et oui - vous n'avez pas fourni suffisamment d'informations. Il y a plusieurs chemins pour passer. Je crois - vous ne voudrez pas entendre les approches de conception axée sur des domaines avancés. Ni vous voulez voir Sql juste à côté de balisage HTML. Seulement, vous savez « le contexte » et peut décider de ce qui est nécessaire, bon et ce qui est pas.

Je vous suggère de vérifier Professional ASP.NET MVC 1.0 . Il y a un chapitre gratuit toute disponible qui marche à travers une partie de l'installation pour une application réelle.

Et jetez un oeil à http://www.nerddinner.com/ pour voir le produit fini .

Ceci est une application MVC très simple et si vous obtenez le livre, vous pouvez le suivre du concept au produit fini.

Je trouve Steven Walther a quelques didacticiels pour la version asp.net MVC 1, en supposant que vous travaillez avec la première version en tant que version 2 est pas encore sorti (RC actuellement). Le premier tutoriel de travail

scroll top