Странная ошибка отображения в dbml-файле linq-to-sql в VS2010 - PullRequest
1 голос
/ 22 апреля 2010

Поскольку я перешел на VS2010, несколько раз в день я получаю сообщение об ошибке компиляции в моем dbml-файле:

DBML1005: Mapping between DbType 'bigint' and Type
'MyNamespace.SecurityToken' in Column 'SecurityToken' of Type
'Employee' is not supported

При перезапуске VS2010 ошибка исчезает. У меня нет проблем с запуском моего приложения с использованием этого файла dbml (в частности, нет проблем с получением правильных значений в свойстве SecurityToken объектов Employee).

Свойство SecurityToken имеет тип перечисления, определенный следующим образом:

[Flags]
public enum SecurityToken : long
{
    None = 1,
    Admin = 2,
    ......
}

Столбец SecurityToken в базе данных имеет тип bigint.

Я что-то упустил? Особенно странно, что такая ошибка возникает иногда, когда я пишу код, который вообще не связан с моделью LINQ.

1 Ответ

6 голосов
/ 22 апреля 2010

Кажется, это ошибка LINQ при разрешении перечислений. Обходной путь должен добавить префикс global::.

Необходимое отображение для этого в вашем файле DBML может выглядеть так:

<Column Name="SecurityToken" Type="global::MyNamespace.SecurityToken" 
        DbType="BigInt NOT NULL" CanBeNull="false" />

Конечно, вы можете сделать то же самое с помощью конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...