背景 我在我安装.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类的项目的右下拉列表。
问题
我该怎么做才能确保当我通过nuget安装EnittyFramework它添加5.0版本而不是4.4时,即使我安装了.Net 4.5?
如果我无法执行与上述问题相关的任何操作,我该怎么做才能确保升级数据库吐出脚本?
答案 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是就地安装” - 不,这对你的目的来说不合适。