2016-08-09 34 views
0

Die folgende Abfrage funktioniert im Debug-Modus in Release-Modus funktioniert:Realm Abfrage nicht nur in Xamarin

private IQueryable<UserState> UsersOfEmail(string email) 
{ 
    return this.realm.All<UserState>() 
        .Where(u => u.EmailAddress == email); 
} 

Wenn in Release-Modus, ich den Fehler:

The rhs of the binary operator 'Equal' should be a constant or closure variable expression

fand ich ein workaround für den Fehler, aber es scheint hier nicht zu gelten.

Wenn ich die aktivieren Debugging Option für das Projekt (iOS, in diesem Fall), es funktioniert gut, weshalb es im Debug-Modus nur an erster Stelle funktionierte.

Irgendwelche Hinweise auf die Beziehung zwischen dem Fehler und der Debugging-Option?

UPDATE

Nach einer weiteren Untersuchung fand ich heraus, dass dieses Problem in keinem Verhältnis zu Realm hat.

Ich missbrauchte das Ereignis pub-sub-Funktion von Prism (MVVM-Framework, unter anderem), und ein Ereignis in einem Ansichtsmodell einer Seite, die von und nach navigiert werden, mehrmals abonnieren, ohne jeweils abzumelden Interaktion.

Ich dachte, das war ein Realm-Problem, weil ich nicht erkannte, dass der email Parameter im Release-Modus null war.

Durch die korrekte Verwendung des Pub-Sub konnte ich das Problem mildern. Ich habe immer noch keine Antwort, warum es nur im Release-Modus passiert, obwohl die Linking-Option in beiden Build-Modi deaktiviert war.

+0

Es sieht so aus, als ob Sie einen Fehler entdeckt haben. Könnte ich Sie bitten, auf [GitHub] (https://github.com/realm/realm-dotnet/issues) ein Problem dafür zu erstellen? Auf diese Weise können wir es besser verfolgen. Vielen Dank! –

+0

Ich konnte das Problem nicht mit einer sehr einfachen, separaten App reproduzieren. Es scheint, dass es nur in einem komplexeren Fall passiert. Ich versuche tiefer zu graben, um herauszufinden, was es ist. Vielen Dank! – MarcVit

+2

Ok, das ist kein Problem mit Realm. Ich habe eine Event-Pub-Sub-Funktion des von mir gewählten MVVM-Frameworks missbraucht. Ich werde die Frage mit einigen Details aktualisieren. – MarcVit

Antwort

0

Wir haben eine neue Version, die bald herauskommt, die relinq verwendet, um das Ausdrucksparsing zu handhaben und sollte dramatisch verbessern, wie wir mit linq umgehen, besonders für diese Art von Ausdruck.

Es wird die nächste Version nach 0.77.2 sein.

Sie sind jedoch die Ersten, die feststellen, dass etwas nur im Freigabemodus fehlschlägt, sodass möglicherweise etwas komplexeres passiert.

Gibt es einen Unterschied in den Linking-Einstellungen zwischen Ihren einfachen und komplexen Apps? Vielleicht verursacht Linker Stripping einige Probleme.

+1

Danke für den Kopf! Es stellt sich heraus, dass dies kein Problem mit Realm war. Ich werde die Frage mit den Details aktualisieren. – MarcVit