Save Flag Enums dans la firebase database SQL et EF6. Est-ce possible?

Sur une application ASP.NET, j’ai un enum flag comme suit:

[Flags] enum Target : int { None = 0, Group = 1, Student = 2, Professor = 4, All = Group | Student | Professor } 

Puis-je enregistrer une valeur contenant plusieurs éléments dans une table de firebase database SQL à l’aide d’Entity Framework 6?

Comment cela serait-il sauvé?

Merci Miguel

Pour simplifier les choses, les drapeaux peuvent être vus comme une sum (simplement pour être simple, mais en réalité, ils fonctionnent avec des opérations au niveau des bits).

Donc, pour votre cas (enum fourni), si un enregistrement a deux cibles (étudiant et professeur), le résultat final sera 6.

EF ne conservera que cela. 6. Vous avez déjà indiqué qu’EF devrait stocker cette colonne en tant qu’INT, car vous avez indiqué que l’énumération doit être comprise comme un int ici:

 enum Target : int { 

Il n’y a pas besoin de faire quoi que ce soit (absolument n’importe quoi!) Sinon.

Pour renvoyer ceci à l’étudiant et au professeur, il existe un Enum.Parse que vous pouvez appeler manuellement (uniquement lorsque cela est nécessaire), mais EF renseignera également la propriété avec cette propriété déjà convertie.

Sur votre code, vous devrez vous préoccuper uniquement du code. Ainsi, par exemple, vous pouvez faire:

 var item = new Something() { Prop = Target.Student | Target.Professor }; context.Save(); var item2 = context.GetSomething(); if (item2.Prop.HasFlag(Target.Professor) && item2.Prop.HasFlag(Target.Student)) { // WOW! } 

C’est ça. J’utilise ceci avec EF6 et il n’y a pas de configuration du tout. Au moins avec l’approche CodeFirst.

Mais n’oubliez pas que cela ne fonctionnera qu’avec les nouvelles versions du .NET Framework. Jetez un coup d’œil à la rubrique d’assistance Enum des documents EF.

Vous pouvez enregistrer une combinaison de drapeaux en tant que int:

 int myFlags = (int)(Target.Group | Target.Professor); 

La seule différence entre les types enum avec et sans HasFlagAtsortingbute réside dans la façon dont ils sont écrits lors de l’utilisation de .ToSsortingng() (et peut-être aussi dans la manière dont ils sont analysés lors de l’utilisation de Enum.Parse). EF supprime en interne les informations sur le type enum et n’utilise que le type enum sous-jacent (en tenant compte de la nullité).