Linq to Entity - puis-je accéder à une autre table du modèle lorsque la page MVC de modèle de liste

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

Question

dans la solution de modèle de projet (Application Web Dynamic Data), le modèle est créé et tout va bien. - Obtenez la liste des tables, et sélectionnez select edit etc.

Mais ma base de données contient des tables de liens qui ne contiennent que des clés forgées - le modèle de liste n'affiche donc que la valeur fk

schéma du tableau

Est-il possible d'associer la liste de la ligne de la table primaire à l'inspection d'une autre table en fonction du fk?

Plus proche d’une jointure SQL? mais en utilisant Linq2Entity et le MetaModel?

Ci-dessous figure List.aspx.cs. Cela semble lier la grille standard à entitydatasource, mais à la table actuelle, conformément à la route dans le MVC.

Mais comme vous pouvez le constater, il est nécessaire d’interroger les tables Personne, Rôle et Lien via le modèle pour obtenir les autres champs afin que cela soit utile. vstudio

PS veut essayer de garder cela dans LINQ2Entity si possible - en essayant de gagner

La chose naturelle que je veux faire est de commencer à créer de nouvelles requêtes SQL pour récupérer les valeurs. Mais ce n’est pas dans cet idiome.

Était-ce utile?

La solution

vous pouvez référencer le métamodèle via le dataContext

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

PS a examiné votre code et cela fonctionne dans votre sceanrio. Vous pouvez obtenir les tables du modèle puis inspecter les données renvoyées pour chaque table du modèle

Article MSDN sur MetaModel

Autres conseils

Utile de l'utiliser également dans le modèle Linq to Entities -

Utilisation de dataContext - vous pouvez obtenir les données exactes les plus utiles.

metaModel permet d'accéder au modèle de données qui vous donne les informations de type ddl sous-jacentes

//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)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top