Domanda

Ho letto e guardare video su MVC e sto iniziando a ottenere un po 'confuso. Le semplici tutorial sono di gran lunga troppo semplice e sembrano coinvolgere una sola tabella di database. doo Whoopty!

I tutorial avanzati assumere un sacco di conoscenze è presente e non ho difficoltà a seguire quelli. Per non parlare, ci sono 15 modi per modellare il database e nessuno vuole spiegare perché lo fanno in questo modo o in quel modo.

Quindi, sto cercando un semplice tutorial o una spiegazione di quale processo si dovrebbe passare attraverso la progettazione di un semplice applicazione CRUD che coinvolge una relazione molti-a-molti, spiegato qui di seguito. Forse non ho fornito informazioni sufficienti quindi sentitevi liberi di richiedere aggiornamenti.

Aggiornamenti: Sarei interessato a vedere una soluzione LINQ to SQL.

Sono andato attraverso la NerdDinner PDF e il mio modello deve essere un po 'diverso dal suo. Voglio una relazione molti-a-molti con il mio pasto e le mie Ingredienti. Egli usa solo un 1-a-molti con la sua cena e RSVP. Inoltre, non ha mai mostra come egli attaccato i RSVP al suo modello cena. Questo è essenzialmente il problema che sto avendo. Perché è che il mio modello pasto non contiene un elenco degli ingredienti? Ho le chiavi esterne corretti in posizione. Non sono sicuro di dove o come avrei impostarlo in modo che io possa accedere gli ingredienti attraverso il modello pasto se volevo stamparli sui dettagli visualizzare o qualcosa del genere.

Pasti

  • Id
  • Titolo
  • Descrizione

Ingredienti

  • Id
  • Nome

Pasti-Ingredienti

  • Id_Meal
  • Id_Ingredient
È stato utile?

Soluzione

L'unica soluzione che ho trovato è stata usando PLINQ. Non è perfetto, per quanto ne so però.

Io uso il "metodo PLINQ" manualmente: http://www.codeproject.com/KB/linq/linq-to-sql-many-to-many.aspx

Sono d'accordo, però, Odio scrivere tutto ciò che il codice più e più volte. E non è una soluzione "pulita".

Altri suggerimenti

Ho molti esempi di questo tipo di rapporto nel mio progetto attuale. Sto usando MVC 1 e LINQ to SQL. Sono andato attraverso esattamente la stessa frustrazione poi come si sta verificando ora. Il più grande ostacolo è accettare il fatto che LINQ to SQL non gestisce direttamente molti-a-molti, ma capire che non ha bisogno di al fine di ottenere le informazioni necessarie.

Cominciamo con la R in CRUD, dal momento che è il modo più semplice per dimostrare che cosa deve essere fatto. Ora, a questo punto mi sento di raccomandare la creazione di un modello di vista fortemente tipizzato, proprio per facilitare il compito di aggregare i dati vista e di semplificare l'assegnazione dei dati di pasto per i dettagli vista:

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

Per recuperare un pasto e la sua lista di ingredienti, ecco il metodo di controllo:

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

Come detto in precedenza, LINQ to SQL non supporta direttamente molti-a-molti, motivo per cui non si può vedere l'entità Ingredienti direttamente da pasto. Tuttavia, come illustrato nel metodo azione di controllo, è possibile accedere alla entità associazione (pasti-Ingredienti) dall'entità pasto. Dall'entità associazione, è possibile accedere l'entità Ingredienti per ottenere l'elenco degli ingredienti. La vista sarebbe simile a questa:

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

Se lo schema del database sia configurato correttamente con le relazioni di chiave esterna si richiedono, questo approccio dovrebbe darvi il risultato che stai cercando.

Mi raccomando di Steve Sanderson 'Pro ASP.NET MVC Framework'. E 'di gran lunga la migliore guida ASP.NET MVC che ho visto, e, a mio parere molto meglio del libro Wrox dal team MSoft. Ne vale la pena se si vuole entrare in esso.

Amazon link

Non si ottiene tutto sul piatto d'argento. Si dovrà passare attraverso hell of wtf te stesso.

E 'come con me e Ruby on Rails - Ogni volta che vedo frammento campione o applicazione di esempio - sembra semplice duper super e ordinato. Ma - perché non ho mai realmente creato nulla me stesso, non ho ottenuto idee con ciò anche per iniziare

.

Quindi, - basta passare attraverso alcuni libri e sample . Poi - creare qualcosa. Questa sensazione (con quello che per iniziare, come strutturare etc.) scomparirà molto presto.

In seguito - non dimenticare secondo estremo - la sensazione che tu sai tutto quello che dovete sapere. :)


E sì - non hai fornito abbastanza informazioni. C'è diversi percorsi da seguire. Io credo - che non si vuole sentire dominio guidato approcci progettuali avanzate. Né si vuole vedere Sql proprio accanto al tag HTML. Solo tu sai ' contesto ' e può decidere ciò che è necessario, buono e ciò che non lo è.

Vi suggerisco di controllare professionale ASP.NET MVC 1.0 . C'è un intero capitolo libero disponibile che cammina attraverso alcuni dei setup per una reale applicazione.

E dare un'occhiata a http://www.nerddinner.com/ per vedere il prodotto finito .

Si tratta di un'applicazione molto semplice MVC e se si ottiene il libro si può seguire dal concept al prodotto finito.

I trovare Steven Walther ha alcune grandi tutorial per asp.net MVC versione 1, supponendo che si sta lavorando con la prima versione in versione 2 non è ancora stato rilasciato (RC attualmente). Il primo tutorial di lavoro inizia qui e si dovrebbe essere in grado di trovare il resto da lì. Ha anche un sacco di buoni consigli se si cerca attraverso il suo blog su quel sito.

Anche la maggior parte di questo tutorial coprire VB e C #, se questo è importante per voi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top