Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework EF 5.0枚举未生成_Entity Framework_Entity Framework Migrations_Entity Framework 5 - Fatal编程技术网

Entity framework EF 5.0枚举未生成

Entity framework EF 5.0枚举未生成,entity-framework,entity-framework-migrations,entity-framework-5,Entity Framework,Entity Framework Migrations,Entity Framework 5,背景 我在一台安装了.NET4.5的机器上使用VS2010,我读到这是一个就地安装(覆盖了.NET4.0版本) 我的项目仍然以4.0为目标,4.5选项不可用,但被告知可以,因为4.5是就地安装的。然后,我通过nuget安装了EntityFramework-pre,并注意到当我运行升级数据库脚本命令时,它不会生成枚举属性 然后我发现。我再次尝试从头做起,但它仍然添加EntityFramework 4.4而不是5.0。因此,我手动更改了所有引用以指向5.0版本,以确保我有EF 5.0版本。全部已编译

背景 我在一台安装了.NET4.5的机器上使用VS2010,我读到这是一个就地安装(覆盖了.NET4.0版本)

我的项目仍然以4.0为目标,4.5选项不可用,但被告知可以,因为4.5是就地安装的。然后,我通过nuget安装了EntityFramework-pre,并注意到当我运行升级数据库脚本命令时,它不会生成枚举属性

然后我发现。我再次尝试从头做起,但它仍然添加EntityFramework 4.4而不是5.0。因此,我手动更改了所有引用以指向5.0版本,以确保我有EF 5.0版本。全部已编译

问题 当我跑的时候

Enable-Migrations -EnableAutomaticMigrations
我得到“在当前项目中找不到从DbContext派生的类”。 编辑生成的配置类以指定要为其启用迁移的上下文。“

因此,我手动确保我的类是正确的,如下所示:

internal sealed class Configuration : DbMigrationsConfiguration<DataContext>
{
    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
    }
我得到“在程序集“MyProject”中找不到任何迁移配置类型”。(在Visual Studio中,您可以使用Package Manager控制台中的Enable migrations命令添加迁移配置)

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

问题

  • 当我通过nuget安装EnittyFramework时,如何确保它添加了5.0版本而不是4.4版本,即使我安装了.Net 4.5

  • 如果我不能做任何与上述问题相关的事情,我可以做什么来确保升级数据库吐出一个脚本


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

    但是,请记住,EF5.0不会像在.NET4.5中那样支持.NET4.0中的所有内容。是的,.NET 4.5会覆盖.NET 4.0,但如果您的项目位于VS2010中,则会将其配置为针对.NET 4.0而不是.NET 4.5生成。它不能假设.NET4.5的特性,因为结果需要在没有.NET4.5的系统上运行。毕竟,您的目标是.NET 4.0,而枚举支持不在从NuGet获得的EntityFramework DLL中,而是在作为.NET运行时一部分的System.Data.Entity DLL中,因此无法添加到.NET 4.0中。您可以安装以创建以.NET 4.5为目标的应用程序


    简言之:“因为4.5是一个就地安装,所以被告知它是可以的”--不,它不适合您的目的。

    感谢您的评论。我关注了Scott Hanelman的博客文章,内容是关于使用将.net framework重定目标为4.5。你是说我应该升级到VS 11吗?@gsogoly是的,VS 2010不支持.NET 4.5。在web应用程序中设置
    targetFramework=“4.5”
    意味着您的.NET 4.0开发的应用程序将运行在.NET 4.5上,但它仍然是.NET 4.0开发的应用程序,并且您实际上没有获得.NET 4.5的任何好处(现有方法中可能存在的错误修复除外)。该死,我有Win32 K8 R2 32位版本,VS11失败,因为它不是64位。真的没有其他方法可以在VS 10上瞄准.net 4.5吗?@gsogoly VS11应该可以在32位系统上正常工作,我自己也在Win7上使用它。不过,我不确定是否要在Windows Server上安装它。但要回答您的问题,您可以使用一些黑客让VS2010接受.NET 4.5,但这涉及到欺骗VS,使其认为它实际上是.NET 4.0的一个变体,并且它与NuGet(它也会将其视为未识别的.NET 4.0变体,并且无法安装软件包)的关系不好,所以这是不可能的,因为您使用的是实体框架。@gsogoly和黑客是唯一可能的方法:VS2010 SP1黑名单.NET 4.5,拒绝打开任何针对它的项目。
    Update-Database -Script