Pergunta

Eu estou usando LINQ to SQL como minha camada de acesso a dados para um novo projeto. Eu adicionei minhas tabelas de banco de dados para o designer e está tudo bem.

Sempre que eu uso uma dessas classes em uma função, Visual Studio me avisa que 'Tipo xxxx não é compatível com CLS' ou que 'Return tipo de função xxxx não é compatível com CLS'

Este é um problema com as classes que LINQ to SQL gera? Será que isso importa? Posso desativar esses avisos em qualquer lugar? Minha lista de erro VS está entupida com estes avisos tornando-se difícil ver qualquer outra coisa.

EDIT:

Desculpe, eu deveria ter mencionado estes são projectos VB.NET. :)

Foi útil?

Solução

Ben M tem a idéia certa sobre o problema.

A maneira mais rápida de resolver isso em um projeto VB.Net é fazer com que a montagem não CLSCompliant e, portanto, evitar esses avisos. Ao adicionar o seguinte linha para qualquer um dos seus arquivos irá fazer o truque

<Assembly: CLSCompliant(False)>

Melhor arquivo para adicioná-lo em é AssemblyInfo.vb dentro da pasta "My Project".

Outras dicas

este link no MSDN Ligação:

Ao adicionar relações de herança entre as classes no designer O / R, o nível de acesso no gerado elemento de suporte de armazenamento a Id atributo, "_id", é alterada de privada para protegido, fazendo com que os CLS violação da regra. A propriedade ID é utilizado em uma associação entre o classes.

Se você quiser se livrar dos avisos, você pode usar:

#pragma warning disable 3021

Ou, se você quiser desativá-los projetar-wide, adicione 3021 para o campo "suprimir avisos" na tab Build de propriedades do seu projeto no Visual Studio.

Em última análise, depende de que tipos estão sendo devolvidos pelo seu banco de dados e que os nomes desses tipos são.

Uma questão em relação ao cumprimento CLS é um tipo que tem dois membros expostos publicamente que diferem apenas no nome a caso, por exemplo, MyField e myField.

Aqui está um artigo que deve ajudá-lo a determinar , onde seus problemas de conformidade CSS estão ocorrendo e lidar com os problemas. Se você precisar de mais ajuda, pose algum código e vamos ver o que podemos fazer.

Eu costumo ver esse erro quando eu estou consumindo tipos de um assembly que não têm o atributo CLSCompliant em outra montagem que faz.

Isto é, são o Linq para as classes SQL em um projeto diferente do que as funções que você está escrevendo? você especificou [assembly: CLSCompliant(true)] em alguns, mas não todos os projetos em sua solução?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top