ASP.NET vNext MVC和实体框架问题

net*_*tik 5 entity-framework entity-framework-core asp.net-core

我正在尝试创建一个ASP.NET vNext WebAPI + AngularJS +实体框架项目.但显然,在EF7中有很多变化,所以我遇到了以下问题:

我改变了project.json如下:

"dependencies": {
    "Microsoft.AspNet.Server.IIS": "1.0.0-beta1",
    "EntityFramework": "7.0.0-beta1",
    "EntityFramework.SqlServer": "7.0.0-beta1",
    "EntityFramework.Commands": "7.0.0-beta1",
    "Microsoft.AspNet.Mvc": "6.0.0-beta1",
    "Microsoft.AspNet.Diagnostics": "1.0.0-beta1",
    "Microsoft.Framework.ConfigurationModel.Json": "1.0.0-beta1"
Run Code Online (Sandbox Code Playgroud)

在我的DataContext类中,我尝试以下方法:

using System;
using Project1.Models;
using Microsoft.Data.Entity;

namespace Project1.DataAccess
{
    public class DataContext
    {
        public DbSet<Website> Websites { get; set; }

        public DataContext()
        {
            Microsoft.Data.Entity.Infrastructure.Database.SetInitializer(new DropCreateDatabaseIfModelChanges<DataContext>());
        //Database.SetInitializer(new DropCreateDatabaseAlways<DataContext>());
        }

     } 
}
Run Code Online (Sandbox Code Playgroud)

}

首先:为什么命名空间System.Data.Entity改为Microsoft.Data.Entity?在任何microsoft msdn文章中我都找不到任何有关此更改的内容!

第二:整体Database.SetInitializer不再起作用了.它建议使用Microsoft.Data.Entity.Infrastructure命名空间,但Database类不包含SetInitializer方法.

Mat*_*rey 4

由于 EF7 仍处于预发布阶段,因此您在 MSDN 文章中还找不到任何有关它的文档;您需要查看EF7 GitHub Wiki以获取任何信息。

当您尝试 EF7 时,请记住,这是新 EF 代码库开发的早期阶段,有许多功能已部分实现或尚未可用。

我相信这SetInitializer是其中一件以完全不同的方式实施的事情;该团队正在避免静态方法,以提高框架的可测试性。

另请注意,EF7是最新版本7.0.0-beta3,但 wiki 提供了有关如何使用夜间构建的信息。(考虑到自 VS2015 CTP6 发布以来发生的严重变化,使用夜间构建可能会很困难。)

  • 那么 `SetInitializer` 的替代品是什么?这个答案实际上似乎并没有回答我的问题。我仍然不确定如何获得相当于“DropCreateDatabaseIfModelChanges”的内容 (2认同)