我正在使用LINQ to SQL作为新项目的数据访问层。我已将我的数据库表添加到设计器中,一切都很顺利。
每当我在函数中使用其中一个类时,Visual Studio会警告我'类型xxxx不符合CLS'或'返回类型函数xxxx不符合CLS'
这是LINQ to SQL生成的类的问题吗?这有关系吗?我可以在任何地方禁用这些警告吗?我的VS错误列表被这些警告堵塞,很难看到其他任何内容。
编辑:
对不起,我应该提到这些是VB.NET项目。 :)
答案 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)]
?