7

我目前正在学习使用 Visual Studio 11 beta 的教程。尝试在我的一个类中设置字段值的最大长度时:

[MaxLength(50)]
public string LastName { get; set; }

它出错并且不会让我编译,因为该MaxLength()函数存在于两个地方:

错误 4 类型“ System.ComponentModel.DataAnnotations .MaxLengthAttribute”同时存在于“c:\Users\me\Documents\Visual Studio 11\ContosoUniversity\packages\EntityFramework.4.1.10331.0\lib\net40\EntityFramework.dll”和“ c:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\System.ComponentModel.DataAnnotations.dll'

我试图删除这两个文件,但这只会导致更多问题,因为我项目中的其他代码依赖于它们。

有没有办法告诉它使用一个或另一个?

所有这些方法似乎都对我不起作用..请参阅答案下的评论..还有其他想法吗?

谢谢

4

7 回答 7

6

在代码顶部使用 using:

using MaxLength = System.ComponentModel.DataAnnotations
于 2012-05-31T20:38:05.060 回答
6

只需从包中卸载 EntityFramework 并重新安装它(EntityFramework)。这个对我有用。只需按照以下步骤操作:

1.右键单击参考 2.单击管理nugetpackages

1.右键单击参考 2.单击管理 nugetpackages。

3.点击卸载

3.点击卸载

  1. 进入在线部分并在搜索框中输入实体框架 5. 单击安装按钮

4.进入在线部分并在搜索框中输入实体框架 5.点击安装按钮

于 2016-08-16T08:45:35.247 回答
3

使用所需的命名空间限定属性

[System.ComponentModel.DataAnnotations.MaxLength(50)]
public string LastName { get; set; } 
于 2012-05-31T21:01:03.890 回答
2

如果您在最新环境(VS 2017/.NET Framework 4.6.x)和实体框架(如 6.1 或 6.2)中遇到相同的错误,这里是解决方案;

将您的实体框架降级到 6.0。它会工作的。

于 2018-02-22T03:54:51.190 回答
1

MaxLength 不是一个函数,它是一个属性。
您可以在每个文件中使用 using 指令来指定当前正确的上下文。
或者只输入完整的命名空间,例如System.ComponentModel.DataAnnotations.MaxLength

于 2012-05-31T20:40:37.400 回答
1

尝试使用外部别名http://msdn.microsoft.com/en-us/library/ms173212.aspx来区分这两个程序集

另请查看页面底部附近的http://bartdesmet.net/blogs/bart/archive/2006/10/07/4502.aspx是一个示例

于 2012-05-31T20:45:17.140 回答
1

这个问题现在是这个问题的最佳答案,所以我想我会在这里回答。

The type 'BLAH' exists in both错误经常出现在以下几种情况:

1. 重复文件——(通常非常简单)众所周知,.dll 文件就是这种情况。在大多数重复的情况下,删除重复文件之一是最简单和最好的解决方案

2. 非重复文件- (更复杂,例如原始发帖人的案例)不幸的是,您需要编辑并经常重新编译/查找文件的替代版本,以免出现此类冲突。幸运的是,用相同的命名空间限定属性通常会解决这样的冲突。

例如,如果您的代码MaxLength在多个文件中提到的某些东西上发生冲突,则在必要的文件中对其进行限定,以明确您要使用的 MaxLength,如下所示 System.ComponentModel.DataAnnotations.MaxLength:这应该有助于清除问题,因此在尝试运行代码时不会发生任何冲突

于 2016-08-08T22:29:09.387 回答