Je veux refactoriser certains modules C# qui lisent des données à partir de SQL Server 2008 via Linq-to-SQL. Ces procédures stockées récupèrent au maximum une ligne, car je soumets le PK complet comme paramètre. Apparemment, Linq-to-SQL n'est pas conscient qu'au maximum une ligne peut être retournée. En conséquence, le code suivant s'exécute pour obtenir une valeur ou lancer une exception :
var results = context.MyProcName(myParameter);
foreach (var result in results)
{
return result.THeColumnINeed;
}
throw new Exception(string.Format("Value not found for parameter {0}", myParameter));
Ce code fait l'affaire, mais il est plutôt moche. Comment puis-je l'améliorer ?