Linq to Entity: posso accedere a un'altra tabella nel modello nella pagina MVC del modello elenco

StackOverflow https://stackoverflow.com/questions/302650

Domanda

nella soluzione del modello di progetto (Dynamic Data Web Application), ho creato il modello e tutto va bene. - Ottieni l'elenco delle tabelle e la modifica modifica ecc.

Ma il mio database ha tabelle di collegamento che contengono solo chiavi forgien - quindi il modello di elenco mostra solo il valore fk

diagramma della tabella

È possibile combinare l'elenco della riga nella tabella principale con un'ispezione di un'altra tabella basata su fk?

Più simile a un join in SQL? ma usando Linq2Entity e il MetaModel?

Di seguito è riportato List.aspx.cs - questo sembra associare la griglia standard a entitydatasource, ma questo è alla tabella corrente secondo il percorso nell'MVC.

Ma come puoi vedere, devo andare a interrogare la tabella Persona, Ruolo e Collegamento tramite il modello per ottenere gli altri campi in modo che ciò sia utile. vstudio

PS vuole provare a mantenerlo in LINQ2Entity, se possibile, cercando di grok

la cosa naturale che voglio fare è iniziare a scartare nuove query sql per andare a recuperare i valori. Ma questo non è in questo idioma.

È stato utile?

Soluzione

puoi fare riferimento al metaModel tramite dataContext

MetaModel refMetaModel = MetaModel.GetModel(typeof(yourdataContextName));
MetaTable refMetaModel;
refMetaModel =  refMetaModel.GetTable("yourTableName");

PS ha esaminato il tuo codice e questo funziona nel tuo scenario. Puoi ottenere le tabelle dal modello, quindi ispezionare i dati restituiti per ciascuna tabella nel modello

Articolo MSDN sul MetaModel

Altri suggerimenti

Utile da utilizzare anche dal modello Linq to Entities -

Usando dataContext - puoi ottenere i dati acutali più utili.

Il metaModel consente l'accesso al dataModel che fornisce le informazioni sul tipo di ddl sottostante

//use the datacontext to get the underlying data
      using (brrdbEntities brr = new brr_dbEntities())
      {
          ObjectQuery<person> people = brr.person;
          IQueryable<string> names = from p in people select p.person_name;
          foreach (var name    in names)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top