C'est facile à faire en SQL et j'ai beaucoup de mal à le faire en utilisant Linq to SQL. J'ai deux entités configuration, projet et ProjectsbyUser:Comment filtrer une entité basée sur une autre entité? Linq many-to-many en C#
[Table(Name = "Projects")]
public class Project
{
[Column(IsPrimaryKey = true, IsDbGenerated = true, Name="Job")]
public string ProjectId { get; set; }
[Column(Name = "Description")]
public string Description { get; set; }
[Association(OtherKey = "ProjectId")]
private EntitySet<ProjectList> _projectlist = new EntitySet<ProjectList>();
public IEnumerable<ProjectList> ProjectList { get { return _projectlist; } }
}
[Table(Name = "ProjectLists")]
public class ProjectList
{
[Column(IsPrimaryKey = true)]
public string UserId { get; set; }
[Column(IsPrimaryKey = true)]
public string ProjectId { get; set; }
}
Donc, dans mon ProjectsController je vais avoir ceci:
public ViewResult myProject()
{
var query = projectsRepository.Projects
.Where(x => x.ProjectId == "H1000").ToList();
return View(query.ToList());
}
Et hé, qu'est-ce que vous savez, il affichera tous les utilisateurs attachés à projet H1000 avec quelques belles déclarations foreach imbriquées dans ma vue. Aussi facile que possible, mais j'essaie de filtrer en fonction de l'utilisateur. Je peux obtenir l'utilisateur assez facile (User.Identity.Name.ToString() qui correspond à la colonne UserId). Cela doit être facile à faire, mais je ne suis pas en train de trouver un moyen de l'accomplir sans écrire un code terrible. Cette blog post explique ce que je veux faire, mais il semble utiliser le modèle "Linq to SQL classes" et maintenant mes entités sont assis dans de beaux fichiers de classe C# et non dans les fichiers de concepteur de GUI VS2008 fantaisie. Il doit y avoir une manière élégante de résoudre ceci, j'ai travaillé dessus pendant environ une semaine et pense que je pourrais m'être couru dans un coin. Merci de votre aide!