2016-05-27 4 views
0

Ich versuche, ein einzigartiges Element abrufen, wenn es vorhanden ist, oder null, wenn es nicht der Fall ist.Entity System.NotSupportedException, wenn sie mit FirstOrDefault Abfrage

meine Funktion ist:

private Dealer GetOrCreateDealer(DataRow dataRow) 
{ 
     ModelCamwareContext localContext = new ModelCamwareContext(); 
     string test = dataRow["Dealer"].ToString(); 
     Dealer dealer = localContext.Dealers.Where(x => x.Name == dataRow["Dealer"].ToString()).FirstOrDefault(); 
     if (dealer != null) 
     { 
     ... 
     } 
     else 
     { 
     ... 
     } 
} 

mein Test-String nur hier ist, um sicherzustellen, dass ich kein Problem mit der Info datarow hatte, es funktioniert wie erwartet und gibt mir die Schnur, an das ich meinen Händler auswählen mag .

Wenn ich nicht irre, FirstOrDefault sollte mir keine Ausnahme geben, falls es keine Händler ist abzurufen, sollte ich in diesem Fall haben Händler = null.

Die Ausnahme, die ich erhalten:

A first chance exception of type 'System.NotSupportedException' occurred in EntityFramework.dll 
A first chance exception of type 'System.NotSupportedException' occurred in EntityFramework.dll 
A first chance exception of type 'System.NotSupportedException' occurred in EntityFramework.SqlServer.dll 

Was habe ich verpasst?

+0

Sie sollten die vollständige Ausnahmebedingung überprüfen. Wahrscheinlich ist das nicht unterstützt Ausnahme von 'x => x.Name verursacht == datarow [ "Dealer"]. ToString()' Ausdruck. Ersetzen Sie es mit 'x => x.Name == Test)' –

+1

Du hast Recht, kam das Problem von dort. Danke. – Belterius

Antwort

1

Entity kann nicht Datentabellen Werte auswerten Inneren LINQ ist. Versuchen Sie etwas wie folgt:

ModelCamwareContext localContext = new ModelCamwareContext(); 
    string test = dataRow["Dealer"].ToString(); 
    Dealer dealer = localContext.Dealers.Where(x => x.Name == test).FirstOrDefault(); 
    if (dealer != null) 
    { 

    } 
    else 
    { 

    } 
Verwandte Themen