4

背景 我在安装了 .Net 4.5 的机器上使用 VS 2010,我读过它是就地安装(覆盖 .net 4.0 版本)。

我的项目仍然针对 4.0 和 4.5 选项不可用,但被告知没关系,因为 4.5 是就地安装。然后,我通过 nuget 安装了 EntityFramework -pre,并在运行 Upgrade-Database -Script 命令时发出通知,它不会生成枚举属性。

然后我发现了这个。我再次尝试从头开始做所有事情,但它仍然添加 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 中,您可以使用包管理器控制台中的 Enable-Migrations 命令添加迁移配置)。

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

问题

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

  2. 如果我不能做与上述问题相关的任何事情,我能做些什么来确保 Upgrade-Database 吐出一个脚本?

4

1 回答 1

7

Entity Framework 5.0 尚未发布。有预发布版本,但您需要专门启用预发布版本才能让 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,枚举支持不在您从 NuGet 获得的 EntityFramework DLL 中,而是在 System.Data.Entity DLL 中,它是 .NET 运行时的一部分,因此无法添加到 .网络 4.0。您可以安装Visual Studio Beta来创建面向 .NET 4.5 的应用程序。

简而言之:“被告知没关系,因为 4.5 是就地安装” - 不,这不适合您的目的。

于 2012-05-07T22:43:23.300 回答