Classes LINQ to SQL non conformes à CLS?
-
22-07-2019 - |
Question
J'utilise LINQ to SQL comme couche d'accès aux données pour un nouveau projet. J'ai ajouté mes tables de base de données au concepteur et tout va bien.
Chaque fois que j'utilise l'une de ces classes dans une fonction, Visual Studio m'avertit que "Type xxxx n'est pas conforme à CLS" ou que "Le type de fonction renvoyé xxxx n'est pas conforme à CLS"
Est-ce un problème avec les classes générées par LINQ to SQL? Est-ce important? Puis-je désactiver ces avertissements n'importe où? Ma liste d’erreurs VS est encombrée par ces avertissements, il est donc difficile de voir autre chose.
EDIT:
Désolé, j'aurais dû mentionner qu'il s'agit de projets VB.NET. :)
La solution
Ben M a la bonne idée du problème.
Le moyen le plus rapide de résoudre ce problème sur un projet VB.Net est de rendre l’assemblage non conforme à CLSC et d'éviter ainsi ces avertissements. Ajouter la ligne suivante à l’un de vos fichiers fera l'affaire
<Assembly: CLSCompliant(False)>
Le meilleur fichier pour l'ajouter est AssemblyInfo.vb à l'intérieur du fichier "Mon projet". dossier.
Autres conseils
J'ai trouvé ce lien sur MSDN Connect:
Lors de l'ajout de relations d'héritage entre les classes dans le concepteur O / R, le niveau d'accès sur le généré membre magasin de support de l'id attribut, "_Id", est remplacé par privé à protégé, causant le CLS violation de règle. La propriété Id est utilisé dans une association entre le classes.
Si vous souhaitez vous débarrasser des avertissements, vous pouvez utiliser:
#pragma warning disable 3021
Ou, si vous souhaitez les désactiver dans l'ensemble du projet, ajoutez 3021 à l'option "Supprimer les avertissements". dans l'onglet Construire des propriétés de votre projet dans Visual Studio.
Cela dépend en fin de compte des types renvoyés par votre base de données et des noms de ces types.
Un problème concernant la conformité CLS concerne un type comportant deux membres exposés publiquement dont le nom diffère par cas, par exemple. MyField et myField.
Voici un article cela devrait vous aider à déterminer où vos problèmes de conformité CSS se posent et à les résoudre. Si vous avez besoin d’aide supplémentaire, posez du code et nous verrons ce que nous pouvons faire.
Je vois généralement cette erreur lorsque je consomme des types d'un assemblage qui n'a pas le Attribut CLSCompliant dans un autre assemblage qui le fait.
C'est-à-dire, vos classes Linq to SQL sont-elles dans un projet différent de celui que vous écrivez? Avez-vous spécifié [assembly: CLSCompliant (true)]
dans certains projets de votre solution, mais pas dans tous?