Ciekawy - powinien działać IIRC; Zobaczę, czy mogę zrobić szybki przykład - możesz jednak sprawdzić, czy masz w pełni kwalifikowaną nazwę wyliczeniową (to znaczy zawierającą przestrzeń nazw).
[aktualizacja] Od wersji here wydaje się, że wersja RTM została dostarczona z błędem podczas rozwiązywania wyliczenia. Jednym z sugerowanych obejść (na tej stronie) było dodanie prefiksu global::
. Działa to dobrze dla mnie bez tego obejścia, więc może jest naprawiony w 3.5 SP1? Prawdopodobnie działa poprawnie również w wersji 3.5, jeśli używasz niekwalifikowanej nazwy, jeśli enum znajduje się w tej samej przestrzeni nazw.
[przykład] Tak, pracował w porządku: z Northwind, ja zdefiniowane enum dla kraju wysyłki:
namespace Foo.Bar
{
public enum MyEnum
{
France,
Belgium,
Brazil,
Switzerland
}
}
I wtedy redagował dbml mieć:
<Column Name="ShipCountry" Type="Foo.Bar.MyEnum" DbType="NVarChar(15)" CanBeNull="true" />
generowany ten:
private Foo.Bar.MyEnum _ShipCountry;
//...
[Column(Storage="_ShipCountry", DbType="NVarChar(15)", CanBeNull=true)]
public Foo.Bar.MyEnum ShipCountry
{ get {...} set {...} }
Wreszcie napisał zapytanie:
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);
}
}
Obrobiona grzywna; wyniki:
10250, Brazil
10252, Belgium
10253, Brazil
10256, Brazil
10261, Brazil
10287, Brazil
10290, Brazil
10291, Brazil
10292, Brazil
10299, Brazil
Zadziałało, gdy dostałem 3,5 SP1 – Barry
Musiałem przed "globalnym ::" z 3.5 SP1. Może to dlatego, że zmieniłem domyślny obszar nazw dla DataContext (Project.Dal), a także dla encji (Project.Dal.Entities)? – jrummell