je requête suivante (EF5, .NET4.5):L'utilisation énumérations à l'intérieur EF interroge
from p in repository
select new Person() {
Name = p.Name,
Birthday = p.Birthday,
MyEnumValue = MyEnum.Value1
};
où MyEnumValue est ENUM défini comme:
public enum MyEnum : byte
{
Value1 = 1,
Value2 = 2
}
Lors de l'exécution de ce code provoquant l'exception:
La distribution spécifiée à partir d'un 'System.Byte' matérialisé ype au type 'MyApp.Domain.Models.MyEnum' n'est pas valide.
Mais si je change la définition enum
public enum MyEnum { ... }
tout fonctionne très bien.
Est-il possible de corriger l'exception ne change pas MyEnum en int? (Et sans propriété octet supplémentaire :))
Quelle est la colonne correspondante dans la base de données? Est-ce CodeFirst? – Pawel
C'est DB-First. Il n'y a pas de colonne correspondante pour MyEnumValue. Je récupère l'objet 'p' (le type n'a pas d'importance) dans la base de données et crée un nouvel objet Person (les types Person et MyEnum ne sont pas inclus dans le modèle). – Andrey
Je ne peux pas le reprocher. J'ai fait public enum TestEnum: byte {Test}; public class Test { public string Nom {obtenir; ensemble; } public TestEnum EnumValue {get; ensemble; }} class Program { static void Main (string [] args) { en utilisant (var = CTX nouvelles entités()) { var c = ctx.Countries.Select (a => nouveau test { Name = a.CountryName, EnumValue = TestEnum.Test}); Console.Write (c! = Null); } } } '. Qu'est-ce que je rate? – Pawel