1

我正在使用LINQ to SQL作爲新項目的數據訪問層。我已經將我的數據庫表添加到設計器中,一切正常。LINQ to SQL類不符合CLS?

每當我使用這些類的功能之一,Visual Studio的警告我說,「類型xxxx是不符合CLS」或「功能XXXX的返回類型不符合CLS」

這是一個LINQ to SQL生成的類的問題?這很重要嗎?我可以在任何地方禁用這些警告嗎?我的VS錯誤列表被這些警告阻塞,很難看到其他任何東西。

編輯:

對不起,我應該提到這些是VB.NET項目。 :)

+0

我沒有這個問題。你的模式是什麼樣的 - 做任何列名違反了CLS規則?就像從非字母字符開始一樣? – tvanfosson 2009-08-05 16:13:46

回答

2

Ben M對這個問題有正確的想法。

在VB.Net項目上解決此問題的最快方法是使程序集不符合CLSCompliant,從而避免出現這些警告。添加下面一行到你的任何文件,會做的伎倆

<Assembly: CLSCompliant(False)> 

最好的文件將其添加到是AssemblyInfo.vb中的「我的項目」文件夾內。

+0

非常好,這就是我一直在尋找的信息。奇怪的是,它並不是DBML文件中的項目被設置爲CLSCompliant,而是引用它的MSTest項目。感謝大家的幫助。 – Nick 2009-08-06 07:37:26

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 2009-08-05 16:47:23

0

我在使用另一個程序集中不具有CLSCompliant屬性的程序集中的類型時,通常會看到該錯誤。

也就是說,您的Linq到SQL類是否與您正在編寫的函數不同?您是否在解決方案中的某些但不是全部項目中指定了[assembly: CLSCompliant(true)]

+0

是的,DBML文件位於具有警告的功能的單獨項目中。 我還沒有指定CLSCompliance,但從閱讀周圍似乎VB.NET自動爲類庫項目執行此操作。 – Nick 2009-08-05 16:38:15