Ответ 1
Любопытный - он должен работать IIRC; Я посмотрю, смогу ли я сделать быстрый пример - однако, вы можете проверить, что у вас есть полное имя перечислимого имени (т.е. Включая пространство имен).
[update] Из здесь кажется, что версия RTM поставляется с ошибкой при разрешении перечисления. Одно из предложенных способов (на этой странице) заключалось в добавлении префикса global::
. Он работает отлично для меня без этого обходного пути, так что, возможно, это исправлено в 3.5 SP1? Он также предположительно отлично работает в версии 3.5, если вы используете неквалифицированное имя, если перечисление находится в том же пространстве имен.
[example] Yup, отлично работал: с Northwind я определил перечисление для страны доставки:
namespace Foo.Bar
{
public enum MyEnum
{
France,
Belgium,
Brazil,
Switzerland
}
}
Затем я редактировал dbml, чтобы:
<Column Name="ShipCountry" Type="Foo.Bar.MyEnum" DbType="NVarChar(15)" CanBeNull="true" />
Сгенерировано:
private Foo.Bar.MyEnum _ShipCountry;
//...
[Column(Storage="_ShipCountry", DbType="NVarChar(15)", CanBeNull=true)]
public Foo.Bar.MyEnum ShipCountry
{ get {...} set {...} }
И, наконец, написал запрос:
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);
}
}
Хорошо работает; Результаты:
10250, Brazil
10252, Belgium
10253, Brazil
10256, Brazil
10261, Brazil
10287, Brazil
10290, Brazil
10291, Brazil
10292, Brazil
10299, Brazil