我正在使用LINQ to SQL作爲新項目的數據訪問層。我已經將我的數據庫表添加到設計器中,一切正常。LINQ to SQL類不符合CLS?
每當我使用這些類的功能之一,Visual Studio的警告我說,「類型xxxx是不符合CLS」或「功能XXXX的返回類型不符合CLS」
這是一個LINQ to SQL生成的類的問題?這很重要嗎?我可以在任何地方禁用這些警告嗎?我的VS錯誤列表被這些警告阻塞,很難看到其他任何東西。
編輯:
對不起,我應該提到這些是VB.NET項目。 :)
我正在使用LINQ to SQL作爲新項目的數據訪問層。我已經將我的數據庫表添加到設計器中,一切正常。LINQ to SQL類不符合CLS?
每當我使用這些類的功能之一,Visual Studio的警告我說,「類型xxxx是不符合CLS」或「功能XXXX的返回類型不符合CLS」
這是一個LINQ to SQL生成的類的問題?這很重要嗎?我可以在任何地方禁用這些警告嗎?我的VS錯誤列表被這些警告阻塞,很難看到其他任何東西。
編輯:
對不起,我應該提到這些是VB.NET項目。 :)
Ben M對這個問題有正確的想法。
在VB.Net項目上解決此問題的最快方法是使程序集不符合CLSCompliant,從而避免出現這些警告。添加下面一行到你的任何文件,會做的伎倆
<Assembly: CLSCompliant(False)>
最好的文件將其添加到是AssemblyInfo.vb中的「我的項目」文件夾內。
非常好,這就是我一直在尋找的信息。奇怪的是,它並不是DBML文件中的項目被設置爲CLSCompliant,而是引用它的MSTest項目。感謝大家的幫助。 – Nick 2009-08-06 07:37:26
它最終取決於數據庫返回哪些類型以及這些類型的名稱是什麼。
有關CLS合規性的一個問題是一種類型,其中有兩個公開曝光的成員,僅在大小寫方面有所不同,例如, MyField和myField。
這裏的an article應該幫助您確定其中您的CSS符合性問題發生並處理問題。如果您需要更多幫助,請提供一些代碼,我們會看看我們可以做些什麼。
當在O/R設計者添加繼承關係 類之間, 的Id 屬性,「_id」的產生 後備存儲器件上的接取水平,改變從 私有保護,導致CLS 規則違規。 Id屬性是 ,用於 類之間的關聯中。
如果你想擺脫的警告,您可以使用:
#pragma warning disable 3021
或者,如果你想禁止他們在項目範圍內,在加上3021的「禁止警告」場在Visual Studio中生成項目屬性的構建選項卡。
嗯,關閉「不會修復」....看起來我只是要嘗試和過濾出來。 – Nick 2009-08-05 16:47:23
我在使用另一個程序集中不具有CLSCompliant屬性的程序集中的類型時,通常會看到該錯誤。
也就是說,您的Linq到SQL類是否與您正在編寫的函數不同?您是否在解決方案中的某些但不是全部項目中指定了[assembly: CLSCompliant(true)]
?
是的,DBML文件位於具有警告的功能的單獨項目中。 我還沒有指定CLSCompliance,但從閱讀周圍似乎VB.NET自動爲類庫項目執行此操作。 – Nick 2009-08-05 16:38:15
我沒有這個問題。你的模式是什麼樣的 - 做任何列名違反了CLS規則?就像從非字母字符開始一樣? – tvanfosson 2009-08-05 16:13:46