Frage

Ich habe Videos über MVC gelesen und angeschaut und bin langsam etwas verwirrt.Die einfachen Tutorials sind viel zu einfach und scheinen nur eine einzige Datenbanktabelle zu umfassen.Whoopty doo!

Bei den Tutorials für Fortgeschrittene wird davon ausgegangen, dass viel Wissen vorhanden ist, und es fällt mir schwer, ihnen zu folgen.Ganz zu schweigen davon, dass es 15 Möglichkeiten gibt, Ihre Datenbank zu modellieren, und niemand möchte erklären, warum sie es auf diese oder jene Weise tun.

Daher suche ich nach einem einfachen Tutorial oder einer Erklärung, welchen Prozess Sie durchlaufen würden, um eine einfache CRUD-Anwendung zu entwerfen, die eine Viele-zu-Viele-Beziehung beinhaltet, die unten erläutert wird.Möglicherweise habe ich nicht genügend Informationen bereitgestellt, Sie können also jederzeit Aktualisierungen anfordern.

Aktualisierung:Ich wäre an einer Linq To Sql-Lösung interessiert.

Ich habe das Nerddinner-PDF durchgesehen und mein Modell muss ein wenig anders sein als seines.Ich möchte eine Viele-zu-Viele-Beziehung zu meiner Mahlzeit und meinen Zutaten.Er verwendet bei seinem Abendessen und seinen RSVPs einfach eine 1-zu-viele-Zahl.Außerdem zeigt er nie, wie er die RSVPs an seinem Dinner-Modell befestigt hat.Das ist im Wesentlichen das Problem, das ich habe.Warum enthält mein Mahlzeitenmodell keine Zutatenliste?Ich habe die richtigen Fremdschlüssel vorhanden.Ich bin mir nicht sicher, wo oder wie ich es einrichten soll, damit ich über das Mahlzeitenmodell auf die Zutaten zugreifen kann, wenn ich sie in der Detailansicht oder so ausdrucken möchte.

Mahlzeiten

  • Ausweis
  • Titel
  • Beschreibung

Zutaten

  • Ausweis
  • Name

Mahlzeiten-Zutaten

  • Id_Meal
  • Id_Ingredient
War es hilfreich?

Lösung

Ich hoffe, Sie haben etwas gefunden, aber für andere da draußen, wer möglicherweise noch suchen könnte, schauen Sie sich dieses ein:

https://github.com/workshirt/wscoachmarksView

Andere Tipps

Ich habe in meinem aktuellen Projekt viele Beispiele für diese Art von Beziehung.Ich verwende MVC 1 und LINQ-to-SQL.Ich habe damals genau die gleiche Frustration durchgemacht, die Sie jetzt erleben.Die größte Hürde besteht darin, die Tatsache zu akzeptieren, dass LINQ-to-SQL nicht direkt viele-zu-viele-Beziehungen verwaltet, aber zu verstehen, dass dies nicht erforderlich ist, um die benötigten Informationen zu erhalten.

Beginnen wir mit dem R in CRUD, da es der einfachste Weg ist, zu demonstrieren, was getan werden muss.Nun würde ich an dieser Stelle empfehlen, ein stark typisiertes Ansichtsmodell zu erstellen, um die Aufgabe der Aggregation Ihrer Ansichtsdaten zu erleichtern und die Zuweisung der Mahlzeitdaten zur Detailansicht zu vereinfachen:

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

Um eine Mahlzeit und ihre Zutatenliste abzurufen, ist hier die Controller-Methode:

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

Wie bereits erwähnt, unterstützt LINQ-to-SQL keine Viele-zu-Viele-Beziehungen direkt, weshalb Sie die Entität „Ingredients“ nicht direkt in Meal sehen können.Wie in der Controller-Aktionsmethode dargestellt, können Sie jedoch über die Meal-Entität auf die Assoziationsentität (Meals-Ingredients) zugreifen.Von der Assoziationsentität aus können Sie auf die Entität Zutaten zugreifen, um die Liste der Zutaten abzurufen.Die Ansicht würde etwa so aussehen:

<%@ 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>

Wenn Ihr Datenbankschema korrekt mit den von Ihnen benötigten Fremdschlüsselbeziehungen eingerichtet ist, sollte dieser Ansatz das gewünschte Ergebnis liefern.

Ich kann Steve Sandersons 'Pro ASP.NET MVC Framework' nur empfehlen. Es ist bei weitem der beste ASP.NET -MVC -Leitfaden, den ich gesehen habe, und meiner Meinung nach viel besser als das Wrox -Buch des MSoft -Teams. Das Geld wert, wenn Sie sich darauf einlassen möchten.

Amazon Link

Sie werden nicht alles auf Silberplatte bekommen. Sie müssen durchgehen hell of wtf dich selbst.

Es ist wie bei mir und Ruby on Rails - jedes Mal, wenn ich Probe -Snippet oder Beispielanwendung sehe - es scheint super duper einfach und ordentlich. Aber - weil ich selbst noch nie etwas geschaffen habe, habe ich keine Ideen mit dem bekommen, was ich überhaupt anfangen sollte.

Also - geh einfach durch einige Bücher und Beispielanwendungen. Dann - etwas erstellen. Dieses Gefühl (mit dem, was zu beginnen, wie man strukturiert usw. ist) wird ziemlich bald verschwinden.

Später - vergessen Sie nicht das zweite Extrem - das Gefühl, Sie wissen alles, was Sie wissen müssen. :)


Und ja - Sie haben nicht genügend Informationen bereitgestellt. Es gibt verschiedene Wege zu gehen. Ich glaube - Sie werden nicht erweiterte Domain -gesteuerte Designansätze hören. Sie möchten SQL auch neben dem HTML -Markup sehen. Nur du weißt 'der Kontext„Und kann entscheiden, was notwendig ist, gut und was nicht.

Sie können Ansichten verwenden, um die Elemente in einer Liste oder Bibliothek anzuzeigen, die für Sie wichtig sind oder an einem bestimmten Zweck passen. Beispielsweise können Sie Ansichten der Dateien in einer Bibliothek erstellen, die auf eine bestimmte Abteilung oder die Elemente in einer Liste anwenden, die von einer bestimmten Person erstellt wurden. Ansichten sind für die Liste oder die Bibliothek verfügbar, in der Sie sie erstellen.

Jede Liste oder Bibliothek hat mindestens eine Ansicht. Im Browser können Sie diese Ansichten ändern und neue Ansichten erstellen. Beispielsweise enthält eine Aufgabenliste mehrere Ansichten, z. B. alle Aufgaben und meine Aufgaben. Sie können diese Ansichten ändern, indem Sie ändern, wie die Elemente in der Liste sortiert sind. Oder Sie können eine neue Ansicht erstellen, die nur die unvollständigen Aufgaben zeigt.

Für Ihre Anforderung können Sie auch anzeigen -> Ansicht ändern -> Stil -> Sie können die gewünschten Styles auswählen.

Schauen Sie sich den folgenden Link an, um weitere Informationen zu Stilen in der Liste / Bibliotheksansicht

Erstellen, Ändern oder Löschen einer Liste einer Liste oder Bibliothek Scrollen Sie im obigen Link nach unten und suchen Sie den Abschnitt "Style" unter "Einstellungen für Ansichten", und es kann Ihnen helfen, Ihre Anforderung durchzuführen.

Ich finde, Steven Walther hat einige großartige Tutorials für ASP.NET MVC Version 1, vorausgesetzt, Sie arbeiten mit der ersten Version, da Version 2 noch nicht veröffentlicht wird (derzeit RC). Das erste Arbeitsaufwand beginnt hier Und Sie sollten den Rest von dort finden können. Er hat auch viele gute Tipps, wenn Sie seinen Blog auf dieser Website durchsuchen.

Auch die meisten dieser Tutorials decken VB und C#ab, wenn das für Sie wichtig ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top