3 Stimmen

Wie man reguläres Inline-SQL im Entity Framework sendet

Jetzt werden Sie nicht gleich sauer. Dies gilt nur für eine ganz bestimmte Situation. Anstatt also zu fragen, warum ich JEMALS Inline-String-SQL über EF senden möchte, sollten wir lieber beim Thema "Wie" bleiben.

Muss ich es die altmodische Route mit regelmäßigen alten ADO.NET tun oder bietet EF mich mit einer Möglichkeit, eine gerade Sql Select/Nonquery ausführen?

Vielen Dank im Voraus.

3voto

Mitch Wheat Punkte 287474

Haben Sie untersucht Entität SQL ?

Entity Framework F&A :

string city = "London";
using (Entities entities = new Entities()) 
{
  ObjectQuery<Customers> query = entities.CreateQuery<Customers>(
    "SELECT VALUE c FROM Customers AS c WHERE c.Address.City = @city",
    new ObjectParameter("city", city)
  );

  foreach (Customers c in query)
    Console.WriteLine(c.CompanyName);
}

Da Entity SQL derzeit keine DML-Konstrukte fehlen, ist es nicht möglich Insert-, Update- oder Delete-Befehle Befehle mit Entity SQL und Object Dienste

1voto

Nick Josevski Punkte 4016

Als Alternative zu ObjectQuery wenn Sie mehr Optionen benötigen, um mehrere Datenbanktabellen zu überqueren, verwenden Sie die context.Database.SqlQuery<> y SqlParameter .

Ejemplo:

var searchId = new Guid("16144A52-A092-4876-9C55-A0AD0109F08A");

var sqlparam = new SqlParameter("sid", searchId);

using (var context = new Entities())
{
    var sql = @"SELECT t1.Name, t2.ChildName
        FROM dbo.Table1 as t1 
        INNER JOIN dbo.Table1 as t2 
            ON t1.Id = t2.ParentId 
        WHERE t1.Id = @sid"

    var result = context.Database.SqlQuery<Combined>(sql, sqlparam);

    foreach(var r in result)
    {
         Console.WriteLine(r.Name + r.ChildName)
    }
}

public class Combined
{
    public string Name { get; set; }
    public string ChildName { get; set; }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X