Классы LINQ to SQL не совместимы с CLS? - PullRequest
1 голос
/ 05 августа 2009

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

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

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

EDIT:

Извините, я должен был упомянуть, что это проекты VB.NET. :)

Ответы [ 4 ]

3 голосов
/ 05 августа 2009

Я нашел эту ссылку на MSDN Connect:

При добавлении наследственных отношений между классами в конструкторе O / R, уровень доступа на сгенерированном бэк-магазин члена Id атрибут "_Id" изменен с от частного к защищенному, вызывая CLS нарушение правил. Свойство Id используется в ассоциации между классы.

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

#pragma warning disable 3021

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

2 голосов
/ 05 августа 2009

У Бен М есть правильное представление о проблеме.

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

<Assembly: CLSCompliant(False)>

Лучший файл для добавления - AssemblyInfo.vb внутри папки «Мой проект».

0 голосов
/ 05 августа 2009

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

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

0 голосов
/ 05 августа 2009

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

Одной из проблем, связанных с соответствием CLS, является тип, в котором есть два публично представленных члена, которые различаются только по имени, например, MyField и MyField.

Вот статья , которая должна помочь вам определить, где возникают ваши проблемы с соблюдением CSS, и решить их. Если вам нужна дополнительная помощь, напишите код, и мы посмотрим, что мы можем сделать.

...