1

私は、新しいプロジェクトのデータアクセスレイヤーとしてLINQ to SQLを使用しています。私はデザイナーに自分のデータベーステーブルを追加し、すべてがうまくいきます。LINQ to SQLクラスはCLS準拠ではありませんか?

私は関数の中で、これらのクラスのいずれかを使用するたびに、Visual Studioは「種類のxxxxはCLSに準拠していません」というか、「関数XXXXの戻り値の型は、CLSに準拠していません」ことを私に警告し

は、このAでありLINQ to SQLが生成するクラスの問題?それは重要ですか?これらの警告をどこでも無効にすることはできますか?私のVSエラーリストは、これらの警告で詰まらず、他のものを見るのを難しくしています。

EDIT:

申し訳ありませんが、私はこれらを言及しているはずですがVB.NETのプロジェクトです。 :)

+0

この問題はありません。スキーマはどのように見えますか?列名のいずれかがCLSルールに違反していますか?アルファベット以外の文字で始めるのと同じですか? – tvanfosson

答えて

2

ベンMは問題について正しい考えを持っています。

VB.Netプロジェクトでこれを解決する最も簡単な方法は、アセンブリをCLSCompliantにしないで、これらの警告を回避することです。あなたのファイルのいずれかに以下の行を追加すると、「マイプロジェクト」フォルダ内AssemblyInfo.vbさにそれを追加するためのトリック

<Assembly: CLSCompliant(False)> 

ベストファイルを行います。

+0

優秀な、それは私が探していた情報です。不思議なことに、その中のDBMLファイルを持つプロジェクトはCLSCompliantに設定されていたのではなく、それを参照していたMSTestプロジェクトでした。誰もが助けてくれてありがとう。 – Nick

0

最終的には、データベースによって返される型とその型の名前によって異なります。

CLS準拠に関する1つの問題は、名前だけが大文字と小文字で区別される公開された2つのメンバーを持つタイプです。 MyFieldとmyField。

ここにan articleがあります。ここでは、のCSSコンプライアンス問題が発生しており、その問題を処理しています。より多くの助けが必要な場合は、いくつかのコードを記述すれば、できることがわかります。 、O/Rデザイナーにクラス間のIdを 属性、「_id」の生成 バッキングストアメンバーのアセスのレベルを を継承関係を追加するとき

3

は私がthis link on MSDN Connect:

を発見し、変更されました からプライベートから保護されているため、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

関連する問題