Ich habe eine Domänenentität mit einer aufgezeigten Enumeration als Eigenschaft. Die markierte Enumeration ist die Zielgruppe für diese Entitäten. Der Benutzer hat dann einen aufgezeichneten Enum-Wert der Entitäten, die er sehen sollte. Ich versuche, den richtigen Ausdruck herauszufinden, um Entitäten auszuwählen, die die Zielgruppe für den Benutzer erfüllen.
%Vor% Ausdruck: (Dies funktioniert, wenn es in IList<File>
ausgeführt wird, funktioniert aber nicht bei einer Abfrage in der Datenbank.)
Irgendwelche Vorschläge wären hilfreich.
Wie funktioniert es in einer Abfrage an die Datenbank nicht?
Sie zeigen weder Ihre vollständige Implementierung noch Ihr Mapping. Behalten Sie TargetAudience
als numerischen Datentyp bei?
Wenn Sie nicht durch einige Umrisse springen, wird Ihre Enumeration als Text in der Datenbank gespeichert, sodass Sie keine bitweisen Operationen darauf ausführen können. (Dieses Verhalten widerspricht etwas von dem, was ich bei Blogs usw. gesehen habe, also weiß ich nicht (a) ob es sich seit früheren Versionen geändert hat, (b) ob es irgendwie einzigartig für den SQLite-Provider ist, dass ich verwende, oder (c) wenn es auf diese Weise von Fluent NHibernate gemappt wird.)
Sie können einen Textvergleich durchführen. Kombinierte Flags werden als kommagetrennte Liste gespeichert. Daher wird TargetAudience.Audience4 | TargetAudience.Audience1
nicht als 9
, sondern als Audience1, Audience4
beibehalten. Beachten Sie, dass es in aufsteigender Reihenfolge beibehalten wird, obwohl ich sie in umgekehrter Reihenfolge angegeben habe.
Sie könnten einige [extension] -Methoden in kurzer Reihenfolge schreiben, die die Gemeinheit dieser Textvergleiche einkapseln würden.
Siehe Wie? Sie ordnen eine Enumeration als int-Wert mit fließendem NHibernate zu? für Informationen über persistente enums als Ganzzahlen
Sie können eine enum-Eigenschaft als eine int-Spalte mit der Methode CustomType zuordnen.
%Vor%Tags und Links c# linq enums fluent-nhibernate