LINQ to SQL类不符合CLS?

时间:2009-08-05 16:01:56

标签: vb.net visual-studio visual-studio-2008 linq-to-sql cls-compliant

我正在使用LINQ to SQL作为新项目的数据访问层。我已将我的数据库表添加到设计器中,一切都很顺利。

每当我在函数中使用其中一个类时,Visual Studio会警告我'类型xxxx不符合CLS'或'返回类型函数xxxx不符合CLS'

这是LINQ to SQL生成的类的问题吗?这有关系吗?我可以在任何地方禁用这些警告吗?我的VS错误列表被这些警告堵塞,很难看到其他任何内容。

编辑:

对不起,我应该提到这些是VB.NET项目。 :)

4 个答案:

答案 0 :(得分:3)

我找到了this link on MSDN Connect:

  

添加继承关系时   在O / R设计师的课程之间,   生成的访问级别   支持Id的商店成员   属性“_Id”改为   私有保护,导致CLS   规则违规。 Id属性是   在...之间的关联中使用   类。

如果您想摆脱警告,可以使用:

#pragma warning disable 3021

或者,如果要在项目范围内禁用它们,请将3021添加到Visual Studio中项目属性的“构建”选项卡中的“抑制警告”字段中。

答案 1 :(得分:2)

Ben M对这个问题有正确的认识。

在VB.Net项目中解决此问题的最快方法是使程序集不是CLSCompliant,从而避免这些警告。将以下行添加到任何文件中都可以解决问题

<Assembly: CLSCompliant(False)>

将其添加到的最佳文件是“My Project”文件夹中的AssemblyInfo.vb。

答案 2 :(得分:0)

它最终取决于数据库返回的类型以及这些类型的名称。

关于CLS合规性的一个问题是具有两个公开暴露的成员的类型,这些成员的名称仅在不同情况下有所不同,例如: MyField和myField。

这里的an article可以帮助您确定 您的CSS合规性问题发生在哪里并处理问题。如果您需要更多帮助,请提供一些代码,我们会看到我们可以做些什么。

答案 3 :(得分:0)

当我从一个程序集中消耗类型时,我通常会看到该错误,该程序集在另一个程序集中没有CLSCompliant属性。

也就是说,你的Linq to SQL类是否与你正在编写的函数不同?您是否在解决方案的某些项目中指定了[assembly: CLSCompliant(true)]