VS2010中linq-to-sql dbml文件中的奇怪映射错误

Ron*_*erg 1 c# visual-studio-2010 linq-to-sql

由于我每天都会多次切换到VS2010,因此我的dbml文件中出现了编译错误:

DBML1005: Mapping between DbType 'bigint' and Type
'MyNamespace.SecurityToken' in Column 'SecurityToken' of Type
'Employee' is not supported
Run Code Online (Sandbox Code Playgroud)

当我重新启动VS2010时,错误消失.使用此dbml文件运行我的应用程序没有问题(具体来说,在对象的SecurityToken属性中获取正确的值没有问题Employee).

SecurityToken属性的枚举类型定义如下:

[Flags]
public enum SecurityToken : long
{
    None = 1,
    Admin = 2,
    ......
}
Run Code Online (Sandbox Code Playgroud)

SecurityToken数据库中的列是类型bigint.

我错过了什么吗?特别奇怪的是,当我编写与LINQ模型完全无关的代码时,错误只会发生.

Ale*_*lex 6

在解析枚举时,这似乎是一个LINQ错误.解决方法是添加global::前缀.

在DBML文件中对此进行必要的映射可能如下所示:

<Column Name="SecurityToken" Type="global::MyNamespace.SecurityToken" 
        DbType="BigInt NOT NULL" CanBeNull="false" />
Run Code Online (Sandbox Code Playgroud)

当然,你可以使用设计师做同样的事情.