Heute habe ich eine SQLRoleProvider Klasse von ADO.NET auf LINQ umgestellt.
Die beiden folgenden Codebeispiele machen genau das gleiche.
An diesem Beispiel wird deutlich wie effektiv LINQ sein kann.
ADO.NET Variante:
bool exists = false;
connectionString = ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM Roles WHERE Rolename = @Rolename", conn);
cmd.Parameters.Add("@Rolename", SqlDbType.VarChar, 255).Value = rolename;
cmd.Parameters.Add("@ApplicationName", SqlDbType.VarChar, 255).Value = ApplicationName;
conn.Open(); // try catch finally hab ich für dieses Beispiel entfernt
int numRecs = (int) cmd.ExecuteScalar();
conn.Close();
if (numRecs > 0)
exists = true;
return exists;
Linq Variante:
private DataContext db = new DataContext();
var roleCount = (from r in db.Roles
where r.Rolename == rolename
select r).Count();
return (roleCount > 0);
Der von der Linq Abfrage erzeugte SQL Code sieht dann so aus:
SELECT [t0].[ID], [t0].[Rolename]
FROM [dbo].[Roles] AS [t0]
WHERE [t0].[Rolename] = @p0