关于c#:. NET 4.0替代.NET 4.5命名空间

.NET 4.0 substitutes for .NET 4.5 namespaces

有一些用于MVC应用程序的代码,它是在vs 2012中使用.NET 4.5作为框架构建的。我目前的系统迫使我在vs 2010上工作。我设法在我的vs2010中打开了vs2012解决方案,但问题是vs2010最多只支持.NET 4。

代码中有一些函数使用仅适用于.NET 4.5的dll文件,例如System.ComponentModel.DataAnnotations.Schema

那么,在.NET 4中是否有可用的替代函数/属性,我可以用它们来做与.NET 4.5中正在做的相同的事情?

这是我使用.NET 4.5的当前代码:

1
2
3
4
5
6
7
8
 [Table("UserProfile")]
    public class UserProfile
    {
        [Key]
        [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
        public int UserId { get; set; }
        public string UserName { get; set; }
    }

如您所见,DatabaseGeneratedAttributeSystem.ComponentModel.DataAnnotations.Schema名称空间下可用,该名称空间是.NET 4.5的一部分。

对于.NET 4中可以使用哪些相应的函数/属性来表示相同的逻辑,有什么建议吗?

注意:在上面给出的代码片段中,我得到了TableDatabaseGeneratedAttribute的错误

The type or namespace name 'Table' could not be found (are you missing a using directive or an assembly reference?)

The type or namespace name 'DatabaseGeneratedAttributeAttribute' could not be found (are you missing a using directive or an assembly reference?)

分别。所以,我猜我只需要在net 4.0中找到相应的类,事情就会发生。非常感谢您的帮助。


在从.NET 4.5更改为4.0之后,我看到了同样的问题。根据本文,包含DataAnnotations的.NET 4.0的"实体框架程序集有一个特殊版本",它已经被合并到.NET 4.5中。

重新安装实体框架使System.ComponentModel.DataAnnotations.Schema再次工作。通过在包管理器控制台中键入以下内容重新安装:

1
2
Uninstall-Package EntityFramework
Install-Package EntityFramework


在本文中,作者声称能够在使用VS2010 SP1的MVC4应用程序中使用System.ComponentModel.DataAnnotations.Schema

让我们知道这是否适合你。


Henrik的解决方案也适用于相反的情况。我在从.NET 4.0到.NET 4.5.1以支持MVC 5.2.3时遇到问题。我也犯了同样的错误。卸载和重新安装实体框架也解决了这种情况下的问题:

1
2
Uninstall-Package EntityFramework
Install-Package EntityFramework


程序包管理器控制台不适合我。我必须去管理nuget包才能解决这个问题。我正在使用vs.net 2013