Linq to Entity - puis-je accéder à une autre table du modèle lorsque la page MVC de modèle de liste
-
08-07-2019 - |
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
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.
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.
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
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)