1

Я использую LINQ to SQL в качестве уровня доступа к данным для нового проекта. Я добавил свои таблицы базы данных дизайнеру, и все хорошо.LINQ to SQL классы не совместимы с CLS?

Всякий раз, когда я использую один из этих классов в функции Visual Studio предупреждает меня, что «Type хххх не CLS-совместимый» или что «тип возвращаемого функцией хххх не CLS-совместимый»

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

EDIT:

К сожалению, я хотел бы упомянуть, это проекты VB.NET. :)

+0

У меня нет этой проблемы. Как выглядит ваша схема: любое имя столбца нарушает правила CLS? Как начать с неалфавитного персонажа? – tvanfosson

ответ

2

Ben M имеет правильную идею о проблеме.

Самый быстрый способ решить это в проекте VB.Net - сделать сборку не CLSCompliant и, следовательно, избежать этих предупреждений. Добавление следующей строки в любой из ваших файлов будет делать трюк

<Assembly: CLSCompliant(False)> 

Лучший файл, чтобы добавить его в это Assemblyinfo.vb внутри папки «My Project».

+0

Отлично, это информация, которую я искал. Странно, что проект не был с DBML-файлом, в котором был установлен CLSCompliant, но проект MSTest, который ссылался на него. Спасибо всем за помощь. – Nick

0

В конечном итоге это зависит от того, какие типы возвращаются вашей базой данных и какие имена этих типов.

Один из вопросов, относящихся к соблюдению CLS, - это тип, в котором есть два открытых объекта, которые различаются по названию, например, MyField и myField.

Здесь an article, который должен помочь вам определить , где возникли проблемы с соблюдением CSS и устранены проблемы. Если вам нужна дополнительная помощь, поместите какой-то код, и мы увидим, что мы можем сделать.

3

Я нашел this link on MSDN Connect:

При добавлении наследования отношений между классами в O/R дизайнере, уровня Асесса на сгенерированный магазин член подложки из Id атрибута «_ID», изменяются от от частного до защищенного, вызывая нарушение правила CLS . Свойство Id имеет значение , используемое в ассоциации между классами .

Если вы хотите избавиться от предупреждений, вы можете использовать:

#pragma warning disable 3021 

Или, если вы хотите, чтобы отключить их проект в масштабах, добавить 3021 в поле «Подавить предупреждения» в Вставьте вкладку свойств вашего проекта в Visual Studio.

+0

Хммм, закрыто с «Не исправить» .... похоже, мне просто нужно попробовать и отфильтровать их. – Nick

0

Обычно я вижу эту ошибку, когда я потребляю типы из одной сборки, которая не имеет атрибута CLSCompliant в другой сборке, которая делает.

То есть ваши классы Linq to SQL в другом проекте, чем функции, которые вы пишете? Вы указали [assembly: CLSCompliant(true)] в некоторых, но не во всех проектах вашего решения?

+0

Да, DBML-файл находится в отдельном проекте от функций, на которых есть предупреждения. Я не указывал CLSCompliance где угодно, но из чтения вокруг это кажется, что VB.NET делает это автоматически для проектов библиотеки классов. – Nick

 Смежные вопросы

  • Нет связанных вопросов^_^