1

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

每当我在函数中使用这些类之一时,Visual Studio 都会警告我“类型 xxxx 不符合 CLS”或“函数 xxxx 的返回类型不符合 CLS”

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

编辑:

抱歉,我应该提到这些是 VB.NET 项目。:)

4

4 回答 4

3

在 MSDN Connect 上找到了这个链接:

在 O/R 设计器中添加类之间的继承关系时,生成的 Id 属性“_Id”的后备存储成员上的访问级别从私有更改为受保护,导致违反 CLS 规则。Id 属性用于类之间的关联。

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

#pragma warning disable 3021

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

于 2009-08-05T16:15:01.123 回答
2

Ben M 在这个问题上的想法是正确的。

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

<Assembly: CLSCompliant(False)>

将其添加到的最佳文件是“我的项目”文件夹中的 AssemblyInfo.vb。

于 2009-08-05T17:14:12.613 回答
0

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

关于 CLS 合规性的一个问题是一种类型,它有两个公开暴露的成员,它们的名称只是大小写不同,例如 MyField 和 myField。

这是一篇文章,可以帮助您确定CSS 合规性问题发生在哪里并处理这些问题。如果您需要更多帮助,请提交一些代码,我们将看看我们能做什么。

于 2009-08-05T16:13:59.007 回答
0

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

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

于 2009-08-05T16:25:00.247 回答