Ich habe den folgenden Code:Anruf schlägt fehl mit null Parametern
public static ContactEventValue GetContactEventValue(ContactEventType contactEventType, string programCode, string brandCode)
{
AdvocacyEntities ent = AdvocacyEntities.GetReadOnlyInstance();
ContactEventValue value = ent.ContactEventValues.SingleOrDefault(
x => x.ContactEventTypeID == contactEventType.ContactEventTypeID
&& x.ProgramCode == programCode && x.BrandCode == brandCode);
}
Wenn ich es mit Werten für brandCode und Programmcode nennen, erhalte ich den erwarteten Wert zurück aus der Datenbank. Als ich den Anruf zu tätigen, sondern explizit x.ProgramCode und x.BrandCode Einstellung auf null erhalte ich den erwarteten Standardwert zurück aus der Datenbank:
ContactEventValue value = ent.ContactEventValues.Single(
x => x.ContactEventTypeID == contactEventType.ContactEventTypeID
&& x.ProgramCode == null && x.BrandCode == null);
Wenn jedoch nenne ich die Methode mit null für Programmcode und brandCode, I Nulle von der Datenbank zurück!
Ich versuchte, die == zu .Equals() pro der Antwort auf diese Frage zu ändern: Nullable optional parameter
So x.BrandCode.Equals (brandCode) ersetzt x.BrandCode == brandCode und x.ProgramCode.Equals (programCode) ersetzt x.ProgramCode == programCode, aber das hat immer noch nicht funktioniert.
habe ich auch versucht mit ?? Betreiber, hat immer noch nicht funktioniert.
Dieses Problem sagt eine Lösung wurde nicht gefunden, und er/sie musste eine gespeicherte Prozedur verwenden: EF 4 Query - Issue with Multiple Parameters Ich möchte wirklich nicht dorthin gehen müssen.
Irgendwelche Ideen?
Wir verwenden EF 5.0.0. Ich habe versucht, UseDatabaseNullSemantics für die Konfiguration festzulegen, aber UseDatabaseNullSemantics ist nicht vorhanden. Es wurde gegoogelt und UseDatabaseNullSemantics scheint nicht in C# zu existieren. – jgerman
Ich habe meine Antwort aktualisiert. – devdigital
Wir verwenden .Net 4.5. Das hat funktioniert! Vielen Dank! – jgerman