EF 5.0枚举不生成

时间:2012-05-07 22:03:39

标签: entity-framework ef-migrations entity-framework-5

背景 我在我安装.Net 4.5的机器上使用VS 2010,我读过这是一个就地安装(覆盖了.net 4.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派生的类。 编辑生成的Configuration类以指定启用迁移的上下文。

所以我手动确保我的课程正确如下:

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

DataContext子类DbContext。

当我跑步时

Update-Database -Script

我得到“在程序集”MyProject“中找不到迁移配置类型。(在Visual Studio中,您可以使用Package Manager控制台中的Enable-Migrations命令添加迁移配置。)

MyProject确实有我上面提到的配置类,在Package Manager Console中我选择了包含Migrations文件夹和此Configuration类的项目的右下拉列表。

问题

  1. 我该怎么做才能确保当我通过nuget安装EnittyFramework它添加5.0版本而不是4.4时,即使我安装了.Net 4.5?

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

1 个答案:

答案 0 :(得分:7)

实体框架5.0尚未推出。有prereleases,但您需要专门启用预发布才能让NuGet显示它们。

但是,请记住,EF 5.0不支持.NET 4.0中.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是就地安装” - 不,这对你的目的来说不合适。