Linq vs. ADO.NET

Sunday, November 25, 2007 7:29:27 PM (Mitteleuropäische Zeit, UTC+01:00)

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

Wenn ihnen der Artikel gefallen hat oder er für sie hilfreich war,
bitte "kicken" sie ihn.

Kick it on dotnet-kicks.de