2012-05-07 82 views
4

背景 我在一台机器上使用VS 2010,我安装了.Net 4.5,我读过的是一个就地安装(覆盖.net 4.0版本)。EF 5.0枚举不生成

我有项目仍然针对4.0和4.5选项不可用,但被告知这是确定的,因为4.5是一个就地安装。然后,当我运行Upgrade-Database -Script命令时,我通过nuget和通知安装了EntityFramework -pre,它不会生成枚举属性。然后我发现this。我试过再次从零开始做所有事情,但它仍然添加EntityFramework 4.4而不是5.0。所以我手动将所有引用改为指向5.0版本以确保我有EF 5.0版本。全部编译。

问题 当我运行

Enable-Migrations -EnableAutomaticMigrations 

我得到“无类,从的DbContext派生在当前项目中找到。 编辑生成的配置类来指定范围内,使迁移的。

因此,我手动确保我的课程是正确的,如:

internal sealed class Configuration : DbMigrationsConfiguration<DataContext> 
{ 
    public Configuration() 
    { 
     AutomaticMigrationsEnabled = true; 
    } 

DataContext子类DbContext。

当我运行

Update-Database -Script 

我得到“没有迁移配置类型是在集中找到‘MyProject的’。(在Visual Studio中,您可以使用从包管理器控制台启用的迁移命令添加迁移配置)

MyProject具有上面提到的配置类,并且在软件包管理器控制台中为我的项目包含Migrations文件夹和此配置类选择正确的下拉菜单。

问题

  1. 我该怎么办,以确保当我通过的NuGet安装EnittyFramework,它增加了5.0版本,而不是4.4,即使我已经安装了.NET 4.5?

  2. 如果我无法做任何与上述问题相关的事情,我该怎么做才能确保升级数据库能够吐出脚本?

回答

7

实体框架5.0还没有出来。有prereleases,但您需要特别启用预发布以便NuGet显示它们。

但是,请记住,EF 5.0将不支持它将在.NET 4.5中的所有.NET 4.0。是的,.NET 4.5会覆盖.NET 4.0,但是如果您的项目在VS2010中,它将被配置为为.NET 4.0而不是.NET 4.5构建。它不能假定.NET 4.5功能,因为结果需要在没有.NET 4.5的系统上运行。毕竟,你的目标是.NET 4.0,并且enum支持不在你从NuGet获得的EntityFramework DLL中,而是在System.Data.Entity DLL中的一部分。NET运行时,所以它不能在.NET 4.0中添加。您可以安装Visual Studio Beta来创建面向.NET 4.5的应用程序。

总之:“被告知没关系,因为4.5是一个就地安装” - 不,不适合你的目的。

+0

欣赏评论。我遵循Scott Hanelman的博客文章,使用将.net框架重定向到4.5。你是说我应该升级到VS 11吗? – TimJohnson

+0

@gsogoly是的,.NET 4.5在VS 2010中不受支持。在Web应用程序中设置'targetFramework =“4.5”'意味着.NET 4.0开发的应用程序将在.NET 4.5上运行,但它仍然是.NET 4.0 - 开发的应用程序,并且实际上并没有获得.NET 4.5的任何好处(除了现有方法中可能的错误修复)。 – hvd

+0

当它,我有Win2k8 R2 32位版本和VS11失败,因为它不是64位。是否真的没有其他方式来针对VS 10上的.net 4.5? – TimJohnson