Le SQL généré fait une jointure croisée, mais comme les ID sont appariés, il agit comme une jointure interne, mais y a-t-il une meilleure façon de le faire en utilisant le mot-clé join en C#? Est-il possible où vous ne devez pas spécifier comment les propriétés se joindre car ils sont tous heirarchicly liés de toute façonMa syntaxe IQueryable est-elle correcte?
article est une classe Page
PageRoles est une propriété IQueryable dans une classe Page
aspnet_Roles est une propriété IQueryable dans une classe PageRole
var item = _repository.GetByKey(999);
var f = (from fd in item.PageRoles
from k in fd.aspnet_Roles
where Roles.GetRolesForUser().Contains(k.RoleName)
&& k.RoleId == fd.RoleId
select k.RoleName)
.Count();
EDIT:
Voici un exemple de propriété IQueryable dans mes classes. L'exemple ci-dessous provient de la classe PageRole
public IQueryable<aspnet_Role> aspnet_Roles
{
get
{
var repo=NorthCadburyWebsite.Models.aspnet_Role.GetRepo();
return from items in repo.GetAll()
where items.RoleId == _RoleId
select items;
}
}
Changez le == à égal, et vous devrez échange donc fd.RoleId est sur la gauche et k.RoleId est sur la droite, mais oui je crois que c'est correct. J'essaie toujours de comprendre le but de la jointure et de la hiérarchie ... –
vous ne pouvez pas faire de k dans fd.aspnet_Roles parce que pour une raison quelconque, il ne reconnaît pas fd ...? – Jon
Je pense que j'avais raison la première fois ... Le K.RoleID va d'abord avant les égaux. Peut-être, mais –