Ich verwende LINQ, um meine Datenbank zu modellieren, aber ich schreibe es von Hand (Steve Sanderson empfiehlt dies in seinem ASP.NET MVC-Buch). Was ich wissen muss, ist, was passiert, wenn Sie eine EntityRef erstellen, und wie sie referenziert wird. Wenn ich meine Abfragen manuell erstellen (ohne LINQ), aber LINQ verwenden, um es zu modellieren, und ich bringe nur die ID von etwas zurück, dann verweisen Sie auf die tatsächliche Tabellenspalte mit EntityRef in der Ansicht, tut es die Verknüpfung, oder tut es neu abfragen der Datenbank für dieses Bit der Informationen?
Um die Dinge zu klären, wenn ich dies in meinem Repository habe:
public IEnumerable<MyTable> ListMyTable(int? myColumnVar)
{
string query = "SELECT * FROM MyTable WHERE MyColumn = {0}";
return this.ExecuteQuery<MyTable>(query, myColumnVar);
}
und dann mache ich in meinem Controller folgendes:
IEnumerable<MyTable> mytables = _contractsControlService.ListMyTable(1);
return View(mytables);
dann mache ich aus meiner Sicht Dinge wie
<%=tbl.Ref.MyColumn %>
Ich verweise auf etwas, das vom LINQ-Modell festgelegt wurde, aber nicht tatsächlich in der Tabellenausgabe enthalten ist. Wie erhält es diese Daten?
Um die Dinge weiter zu klären, verwenden wir Systeme, die ultimative Geschwindigkeit erfordern, so dass die LINQ-to-SQL ist zu langsam für uns, daher sind wir mit direkten Abfragen in unserem Repository. Ich hätte nichts dagegen, diese EntityRef-Sache zu verwenden, wenn ich nur wüsste, was darunter passiert.