Curieux - cela devrait fonctionner IIRC ; je vais voir si je peux faire un exemple rapide - cependant, vous pourriez vouloir vérifier que vous avez le nom de l'enum entièrement qualifié (c'est-à-dire incluant l'espace de noms).
[mise à jour] De aquí il semble que la version RTM soit livrée avec un bug lors de la résolution de l'enum. Une solution de contournement suggérée (sur cette page) était d'ajouter l'élément global::
préfixe. Cela fonctionne bien pour moi sans cette solution de contournement, donc peut-être que le problème est corrigé dans la version 3.5 SP1 ? Cela fonctionne aussi prétendument bien dans 3.5 si vous utilisez le nom non qualifié si l'enum est dans le même espace de noms.
[Oui, cela a bien fonctionné : avec Northwind, j'ai défini un enum pour le pays de livraison :
namespace Foo.Bar
{
public enum MyEnum
{
France,
Belgium,
Brazil,
Switzerland
}
}
J'ai ensuite édité le dbml pour avoir :
<Column Name="ShipCountry" Type="Foo.Bar.MyEnum" DbType="NVarChar(15)" CanBeNull="true" />
Ceci a été généré :
private Foo.Bar.MyEnum _ShipCountry;
//...
[Column(Storage="_ShipCountry", DbType="NVarChar(15)", CanBeNull=true)]
public Foo.Bar.MyEnum ShipCountry
{ get {...} set {...} }
Et j'ai finalement écrit une requête :
using (DataClasses1DataContext ctx = new DataClasses1DataContext())
{
var qry = from order in ctx.Orders
where order.ShipCountry == Foo.Bar.MyEnum.Brazil
|| order.ShipCountry == Foo.Bar.MyEnum.Belgium
select order;
foreach (var order in qry.Take(10))
{
Console.WriteLine("{0}, {1}", order.OrderID, order.ShipCountry);
}
}
Ça a bien fonctionné ; résultats :
10250, Brazil
10252, Belgium
10253, Brazil
10256, Brazil
10261, Brazil
10287, Brazil
10290, Brazil
10291, Brazil
10292, Brazil
10299, Brazil