Je suis le prototypage de ma première application MVC, c'est un forum simple. J'ai fait une partie du modèle de domaine et j'essaie de comprendre comment faire quelque chose qui est assez basique dans SQL seul, mais je ne peux pas le comprendre dans mon application. Voici mes entités:MVC - Linq - Remplir la liste <T> avec des enregistrements dans une autre table
[Table(Name="Users")]
public class User
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
public int Id { get; set; }
[Column] public string Username { get; set; }
[Column] public string Password { get; set; }
[Column] public string PasswordHash { get; set; }
[Column] public string PasswordSalt { get; set; }
[Column] public string FirstName { get; set; }
[Column] public string LastName { get; set; }
public List<Forum> AllowedForums { get; set; }
[Column] public DateTime LastLogin { get; set; }
[Column] public DateTime MemberSince { get; set; }
}
[Table(Name="Forums")]
public class Forum
{
[Column(IsPrimaryKey=true, IsDbGenerated=true, AutoSync=AutoSync.OnInsert)]
public int Id { get; set; }
[Column] public int ParentId { get; set; }
[Column] public string Title { get; set; }
[Column] public string Description { get; set; }
[Column] public bool IsGlobal { get; set; }
[Column] public int DisplayOrder { get; set; }
}
J'ai aussi une table de liaison appelé AllowedForums qui ressemble à:
userid forumid
1 4
Afin de sélectionner les forums que l'utilisateur est autorisé à voir et des forums où isGlobal == vrai que je ferais ceci dans SQL:
SELECT * FROM Forums
LEFT OUTER JOIN AllowedForums ON Forums.id = AllowedForums.Forumid
WHERE AllowedForums.Userid = 1
OR Forums.IsGlobal = 1
Comment dois-je remplir le
public List<Forum> AllowedForums
champ utilisant C#/Linq à SQL?
Est-ce que AllowedForum doit être un objet de valeur avec son propre mappage de table? Cela semble exagéré mais je pourrais facilement y participer. J'ai regardé brièvement EntitySet mais l'exemple simple que j'ai vu ne semblait pas convenir. Il semble qu'il devrait y avoir un moyen élégant d'obtenir une collection d'objets Forum pour chaque utilisateur, mais je ne peux pas en trouver. BTW, je suis nouveau à C# & OO. Je devrais également mentionner que puisque ce sont les premières étapes de l'application, je suis ouvert à changer la structure/les relations des entités ou des tables s'il y a une meilleure approche que je ne vois pas.
Ne serait-ce pas pour chaque sortie lors de sa première itération? –
quelque chose comme get {return from r dans AllowerForumsRelationship select r.Forum; } –
Je pense que j'en ai assez pour essayer ça. Je vais vous laisser savoir comment ça se passe. – Dzejms