有趣的是 - 按照我所记得的应该能够工作; 我会看看是否可以提供一个快速的示例 - 然而,您可能需要检查您是否拥有完全限定的枚举名称(即包括命名空间)。
[更新] 从这里看起来,RTM版在解析枚举时存在一个错误。该页面上建议一种解决方法是添加global ::
前缀。对我来说,没有这个解决方法也可以正常工作,因此可能在3.5 SP1中已经修复了这个问题?如果枚举与同一命名空间中,则使用未限定名称的情况下,在3.5中据称也可以很好地工作。
[示例] 是的,正常工作:使用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