Entity Framework 6 无法识别 AddSqlServer()
Entity Framework 6 not recognizing AddSqlServer()
我正在尝试将 EF6 与 VS2015 CTP 和 ASP.NET MVC 6 一起使用。它无法识别我在使用 EF7 时添加的 startup.cs
中下面提到的代码。
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework(Configuration)
.AddSqlServer()
.AddDbContext<VNDBContext>(options => options.UseSqlServer(Configuration.Get("Data:VNDBContext:ConnectionString")));
services.AddMvc().Configure<MvcOptions>(options =>
{
var jsonFormatter = (JsonOutputFormatter)options.OutputFormatters
.Where(o => o.Instance.GetType() == typeof(JsonOutputFormatter)).First().Instance;
jsonFormatter.SerializerSettings.ReferenceLoopHandling =
ReferenceLoopHandling.Ignore;
});
services.AddSingleton<INodeService, NodeService>();
}
如果我使用 EF7,它还有其他问题,因为它还不成熟。
在 MVC6 中执行所有操作但使用 EF6 时如何设置上述设置?
EF6 是一个与 EF7 截然不同的框架,并且没有 UseSqlServer 扩展方法。
正如@ErikEJ 在他的回答中提到的那样,EF6 与 EF7 有很大不同,并且没有任何用于在 Startup.cs 中工作的实用程序。但是,这并不是说这是不可能的。我在自己的项目中使用类似于以下内容的行来执行此操作:
services.AddTransient<MyEf6DbContext>(sp => new MyEf6DbContext(Configuration.Get("Data:VNDBContext:ConnectionString")));
这允许您使用 MyEf6DbContext
注入您的控制器和其他服务,就像您期望的那样!您必须做一些更多的工作才能获得 Identity 3 等才能与 EF6 一起使用,但它们都是非常可插入的。
实际上,您可以将 EF6 与 dnx451 和 MVC6 结合使用,这样您就可以访问所有新的 API。不过,EF6 并非开箱即用,无法与新的 DependencyInjection 系统配合使用,因此您需要自行配置它。此外,迁移根本不起作用。我编写了一些替换 'k/dnx' 命令,它们可以像 EF7 项目一样处理迁移。
实际上在最新的更新中他们已经改变了一点!他们将包重命名为 EntityFramework.MicrosoftSqlServer 尝试在 nuGet 管理器中搜索它,您将获得您正在寻找的所有方法。
我正在尝试将 EF6 与 VS2015 CTP 和 ASP.NET MVC 6 一起使用。它无法识别我在使用 EF7 时添加的 startup.cs
中下面提到的代码。
public void ConfigureServices(IServiceCollection services)
{
services.AddEntityFramework(Configuration)
.AddSqlServer()
.AddDbContext<VNDBContext>(options => options.UseSqlServer(Configuration.Get("Data:VNDBContext:ConnectionString")));
services.AddMvc().Configure<MvcOptions>(options =>
{
var jsonFormatter = (JsonOutputFormatter)options.OutputFormatters
.Where(o => o.Instance.GetType() == typeof(JsonOutputFormatter)).First().Instance;
jsonFormatter.SerializerSettings.ReferenceLoopHandling =
ReferenceLoopHandling.Ignore;
});
services.AddSingleton<INodeService, NodeService>();
}
如果我使用 EF7,它还有其他问题,因为它还不成熟。
在 MVC6 中执行所有操作但使用 EF6 时如何设置上述设置?
EF6 是一个与 EF7 截然不同的框架,并且没有 UseSqlServer 扩展方法。
正如@ErikEJ 在他的回答中提到的那样,EF6 与 EF7 有很大不同,并且没有任何用于在 Startup.cs 中工作的实用程序。但是,这并不是说这是不可能的。我在自己的项目中使用类似于以下内容的行来执行此操作:
services.AddTransient<MyEf6DbContext>(sp => new MyEf6DbContext(Configuration.Get("Data:VNDBContext:ConnectionString")));
这允许您使用 MyEf6DbContext
注入您的控制器和其他服务,就像您期望的那样!您必须做一些更多的工作才能获得 Identity 3 等才能与 EF6 一起使用,但它们都是非常可插入的。
实际上,您可以将 EF6 与 dnx451 和 MVC6 结合使用,这样您就可以访问所有新的 API。不过,EF6 并非开箱即用,无法与新的 DependencyInjection 系统配合使用,因此您需要自行配置它。此外,迁移根本不起作用。我编写了一些替换 'k/dnx' 命令,它们可以像 EF7 项目一样处理迁移。
实际上在最新的更新中他们已经改变了一点!他们将包重命名为 EntityFramework.MicrosoftSqlServer 尝试在 nuGet 管理器中搜索它,您将获得您正在寻找的所有方法。