2017-06-21 4 views
0

Also ich lerne .NET Core mit EF und habe ein paar Tutorials durchlaufen. Was ich bisher noch nicht gesehen habe, ist ein guter Überblick darüber, welche Abfragesprache verwendet wird.Abfrage Sprache für Entity Framework

  • Die Funktion orientierten Ansatz:

Beispiele sind:

_context.Exams.ToListAsync() 
_context.Problems.SingleOrDefaultAsync(p => p.ExamID == exam.ID 
students.Where(s => s.LastName.Contains(searchString) || s.FirstMidName.Contains(searchString)); 

und manchmal werden diese aneinander gereiht:

_context.Students 
      .AsNoTracking() 
      .SingleOrDefaultAsync(m => m.ID == id); 
Ich habe zwei Ansätze bisher gesehen werden
  • Die SQL-looking appr oach:

Ich denke, nur ein Beispiel gebraucht wird:
from problem in _context.Problems where problem.ExamID == examID select problem;

Also meine Frage ist, was sind diese beiden jeweils genannt? Wann sollten Sie eines über das andere wählen (ich glaube, ich sah ein Tutorial mit beiden). Und sind beide Beispiele für LINQ-Abfragen?

Antwort

1
from s in _context.Students where s.ID == 1 select s; 

Ich glaube, dass dies als die Abfrage Syntax LINQ Ausdruck bezeichnet wird.

und dieses

_context.Students.SingleOrDefault(m => m.ID == 1); 

einige Leute nennen das Format als Methode basiert Linq-Abfrage Ausdruck. Dieser ist expliziter (für einige Leute)

Dies sind nur Namen und es ist eine persönliche Vorliebe für Leute auszuwählen, welche sie verwenden möchten. Es ist wichtig zu verstehen, dass beide Formate identische Ergebnisse liefern.

Auch ich denke, wenn der Code ausgeführt wird, konvertiert der C# -Compiler die erste Form in seine äquivalente Methode basierte Ausdruck als Teil der internen lowering process.

Verwandte Themen