Quelle est la bonne façon de Joindre deux tables dans ASP.NET MVC?

J'ai travaillé sur un simple Dropbox-like app, pour apprendre quelques ASP.NET MVC. Mais avant d'en arriver à une page de travail décemment je suis coincée, et il y a tellement d'infos que je ne peux pas voir la forêt pour les arbres de plus.

Ma situation:

Je veux afficher sur une page tous les fichiers dans un dossier appartenant à une certaine personne. J'ai conçu ma base de données à l'avance et ensuite généré un Code Premier modèle EF. La partie pertinente de la base de données ci-dessous. Notez que AspNetUsers fait partie de MVC5 Identité. La liaison Identity à mes propres tableaux, qui semble être la partie la plus difficile, car les tables appartenant à Identity sont mis en œuvre dans IdentityModels, tandis que mes tableaux sont mis en œuvre dans TADModels.

Quelle est la bonne façon de Joindre deux tables dans ASP.NET MVC?

J'ai été à la suite de divers tutoriels sur cette page, mais n'arrive pas à trouver quelque chose qui m'aide à accomplir ce dont j'ai besoin. Je suis fondamentalement juste essayer d'exécuter la requête suivante:

SELECT f.FileName, f.FileSize
FROM Files f
INNER JOIN FileTree ft ON ft.FolderID = f.FolderID
INNER JOIN AspNetUsers u ON ft.UserID = u.Id
WHERE u.id = @id AND ft.FolderPath = @path;

Selon l'un de ces tutoriels, je suis censé être en mesure de faire quelque chose le long des lignes de:

namespace TAD.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    [Table("FileTree")]
    public partial class FileTree
    {
        [Key]
        public string FolderID { get; set; }

        [Required]
        [StringLength(128)]
        public string UserID { get; set; }

        [Required]
        [StringLength(255)]
        public string FolderName { get; set; }

        [Required]
        [StringLength(255)]
        public string FolderPath { get; set; }

        public virtual ICollection<File> Files { get; set;  }

        public virtual ApplicationUser user { get; set; }
    }
}

Les Fichiers de la Collection est censé trouver les fichiers associés avec le chemin d'accès, et l'utilisateur est censé trouver l'utilisateur associé avec le chemin d'accès. Mais au cours de l'Échafaudage j'ai des erreurs le long de la lignes de TAD.Models.IdentityUserRole: EntityType 'IdentityUserRole' has no key defined. Define the key for this EntityType'. Qui, je suppose, est produit en raison de ApplicationUSer user

Cette question semble très déroutant, même pour moi. Je ne sais pas ce que je suis à la recherche pour. Les tutoriels que j'ai mentionnés présentent des situations trop simples pour mes besoins, tandis que d'autres l'info, c'est beaucoup trop avancé.

EDIT: C'est le Fichier de Modèle:

namespace TAD.Models
{
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    using System.Data.Entity.Spatial;

    public partial class File
    {
        [Key]
        public string FileID { get; set; }

        [Required]
        [StringLength(128)]
        public string UserID { get; set; }

        [Required]
        [StringLength(128)]
        public string FolderID { get; set; }

        [Required]
        [StringLength(255)]
        public string FileName { get; set; }

        public decimal FileSize { get; set; }

        public bool IsPublic { get; set; }
        public virtual ApplicationUser user { get; set; }

        public virtual FileTree folder { get; set; }
    }
}
Quel est votre File modèle? Vous pouvez simplement le faire manuellement via LINQ
Ajouter mon Fichier de classe. L'annotation de la Clef a été suggéré dans l'une des réponses ci-dessous, aucune idée si j'ai réellement besoin.
Vous pouvez hériter de l'Identité des Modèles facilement, ajouter une de vos propriétés! Cela peut vous aider un peu: public class MyUser : IdentityUser {}

OriginalL'auteur Simon Verbeke | 2014-11-10