lors de l'exécution de la LINQ suivante pour instruction SQL:Pourquoi ai-je une exception InvalidOperationException avec cette méthode Linq to Sql?
var stuff = from l in _db.SqlLinks
select new
{
Link = l,
Rating = (from v in l.SqlLinkVotes
where v.Tag == tagId
&& v.VoteDate >= since
select v.Vote).Sum(),
NumberOfVotes = (from v in l.SqlLinkVotes
where v.Tag == tagId
&& v.VoteDate >= since
select v.Vote).Count(),
NumberOfComments = (from v in l.SqlLinkVotes
where v.Tag == tagId
&& v.VoteDate >= since
&& v.Comment != ""
select v.Vote).Count()
};
Je reçois un System.InvalidOperationException (valeur nulle ne peut pas être attribué à Int32). Par le débogage, j'ai vu que cela vient de la propriété Rating de l'objet dynamique. Quand il n'y a pas de SqlLinkVotes pour un lien particulier, Sum() donne une valeur nulle, mais Rating est un int, et linq to sql pense que Sum() donnera un int, pas un intensible.
Je pourrais facilement écrire une procédure stockée pour contourner cela, mais j'ai pensé que c'était un bon moyen pour moi de mieux comprendre linq à sql.
Aidez s'il vous plaît!
Aha! Tu m'as battu! Je viens de poster la même chose. –
Cette réponse fonctionne - a été mordu par cela il ya quelques semaines, a trouvé cette solution. –
L'homme qui est un petit problème frustrant si –