Ok, dernière édition, promesse:LINQ InvalidOperationException lors d'une requête
Avec la classe suivante:
public partial class MembershipModule : BaseConnection<MembershipModule>
{
private const string AccessPrivilege = "Access";
public bool Accessible()
{
return this.Privileges().Any(p => p.Name.Equals(AccessPrivilege));
}
public IQueryable<MembershipAction> Privileges()
{
var privileges = from p in LinqUtil.Context.MembershipModuleActions
where
p.MembershipModule.Id.Equals(this.Id) &&
p.MembershipRolePrivileges.Any(rp => rp.ModuleActionId.Equals(p.Id))
select p.MembershipAction;
return privileges;
}
}
Pourquoi ce travail
public static List<MembershipModule> Collection()
{
List<MembershipModule> collection = new List<MembershipModule>();
if(!MembershipUser.Connected)
return collection;
foreach(MembershipModule m in LinqUtil.Context.MembershipModules)
{
if(m.Accessible())
collection.Add(m);
}
return collection;
}
Bien que cela ne fonctionne pas?
public static List<MembershipModule> Collection()
{
if(!MembershipUser.Connected)
return new List<MembershipModule>();
return LinqUtil.Context.MembershipModules.Where(m => m.Accessible()).ToList();
}
Le nom de votre classe commence par un trait de soulignement et une lettre minuscule? Pouah. S'il vous plaît ne le faites pas, ce n'est même pas conforme CLS pour commencer un nom de classe avec un soulignement, sans parler du fait qu'il est moche. –
oui, je pense que je basé sur les tables d'adhésion aspnet, je l'ai déjà changé, bon conseil =) – bevacqua