6-julio-2013
admin

Usar SQL en Entity Framework

Hay distintas posibilidades, a continuación se expondrán algunas de ellas:

1 – Se puede utilizar el método ExecuteStoreQuery para lanzar queries contra el origen de datos:

using (SchoolEntities context = new SchoolEntities())
{
    // Use the parameter substitution pattern.
    foreach (string name in context.ExecuteStoreQuery< string >
        ("Select Name from Department where DepartmentID < {0}", 5)) {
        Console.WriteLine(name);
    }

    // Use parameter syntax with object values.
    foreach (string name in context.ExecuteStoreQuery< string >
        ("Select Name from Department where DepartmentID < @p0", 5)) {
        Console.WriteLine(name);
    }
    // Use an explicit SqlParameter.
    foreach (string name in context.ExecuteStoreQuery< string >
        ("Select Name from Department where DepartmentID < @p0",
            new SqlParameter { ParameterName = "p0", Value = 5 })) {
        Console.WriteLine(name);
    }
}

2 - Otra forma sería usar el método translate para convertir un DbDataReader en (siguiente el ejemplo anterior) objetos del tipo Department.

3 - También tenemos el método ExecuteStoreCommand, que permite ejecutar comandos directamente contra el origen de datos: insert, update,...

4 - Otra posibilidad que nos permite Entity Framework consiste en crear una EntityConnection para usar un EntityCommand

NorthwindEntities context = new NorthwindEntities();
EntityConnection conn = new EntityConnection(context.Connection.ConnectionString);
conn.Open();
var sql = "SELECT VALUE emp FROM NorthwindEntities.Employees AS emp";
EntityCommand cmd = new EntityCommand(sql, conn);
DbDataReader reader = cmd.ExecuteReader(CommandBehavior.SequentialAccess);
while (reader.Read()) {
  Console.WriteLine("{0} {1} {2} {3}", reader["EmployeeID"], reader["LastName"],
    reader["FirstName"], reader["Country"]);
}

Fuentes:
Cómo: Ejecutar directamente comandos contra el origen de datos en .Net Framework 4

Cómo ejecutar una consulta de Entity SQL parametrizada con EntityCommand

Comentarios cerrados.

Categorias

Linkedin