2017-08-15 1 views
0

ich eine gespeicherte Prozedur von EF-Core 1.1, im Anschluss an die Beratung über https://docs.microsoft.com/en-us/ef/core/querying/raw-sqlEntity Framework Core-Stored Proc ohne DbSet

Aber ich erstellt eine Klasse speziell, dass an die Form der zurückgegebenen Daten aus dem gespeicherten proc

Aufruf
List<MyStoredProcResultType> results = context.MyStoredProcResultType 
    .FromSql("EXECUTE dbo.MyStoredProc {0}", someParam) 
    .ToList(); 

das bedeutet aber, ich habe eine DbSet für MyStoredProcResultType im Context zu schaffen und jetzt ist es legal, diese

context.MyStoredProcResultType.Where(..)

0 codieren

aber natürlich funktioniert das nicht.

Gibt es eine Möglichkeit, den gespeicherten Proc gegen die Context anstatt eine DbSet aufzurufen und die Ergebnisse in einen Typ zu legen, den ich erstelle?

+0

Nicht möglich ab EF Core 2.0 Siehe https://github.com/aspnet/EntityFramework/issues/1862 – Smit

+0

@Smit Wenn Sie das in einer Antwort platzieren möchten, akzeptiere ich. Vielen Dank – Bryan

Antwort

1

Gegenwärtig kann in der EF Core 2.0 RTM-Version FromSql nur mit den Typen verwendet werden, die in Ihrem Modell als EntityType definiert sind. Die Einschränkung ist da, weil EF Core Metadaten über den EntityType hat und weiß, wie man sie realisiert. Für jeden anderen Typ (wie benutzerdefinierten DTO/Ergebnistyp) funktioniert FromSql nicht.

Dies ist tracking issue auf EF Core GitHub-Repository, die genau das verfolgt, was Sie suchen.

EF Core 2.1.0 plant die Unterstützung von Abfrageansichten. Tracking issue. Dies könnte ein Szenario wie das Ihre ermöglichen, wenn Sie EF Core über den benutzerdefinierten Typ, den Sie beim Modellaufbau verwenden möchten, informieren möchten. Es würde nicht als EntityType/Tabelle zugeordnet, aber EF Core würde immer noch Metadaten um es herum berechnen, um Abfragen wie oben zu unterstützen.

Verwandte Themen