Ich bin ein großer Fan von benannten Parametern anstelle von String-basierten Parameter-Injektion. Es ist typsicher und sicher gegen die meisten Formen der SQL-Injektion. In altem ADO.NET würde ich ein SqlCommand-Objekt und eine Menge SqlParameters für meine Abfrage erstellen.Bei Verwendung von DbSet <T> .SqlQuery(), wie benannte Parameter verwenden?
var sSQL = "select * from Users where Name = @Name";
var cmd = new SqlCommand(conn, sSQL);
cmd.Parameters.AddWithValue("@Name", "Bob");
cmd.ExecuteReader();
nun in Entity Framework, es erscheint (auf diesen Link) zu einer einfachen String.Format Anweisung und String-Injektion wieder zurückgebildet haben: (zur Diskussion vereinfacht)
MyRepository.Users.SqlQuery("Select * from Users where Name = {0}", "Bob");
Gibt es eine Möglichkeit, benannte Parameter mit der Entity Framework DbSqlQuery-Klasse zu verwenden?
Wo ist das dokumentiert? Und welche Namensformate sind im SQL-Body zulässig? Kann es den @ name Stil nicht unterstützen? –
@EricFalsken. Sie können in [hier in MSDN] (http://msdn.microsoft.com/en-us/library/system.data.objects.objectparameter.aspx) sehen, ** dieser \ @name-Stil wird unterstützt **. – gdoron
Perfekt! Vielen Dank! –