当前位置: 首页 > 编程语言 > C#

如何在Asp.Net5中使用EntityFramework6.x(MVC6)分享

时间:2023-04-10 15:40:33 C#

如何在Asp.Net5中使用EntityFramework6.x(MVC6)我用的是VS2015CTP-6测试新的Asp.Net5。由于EntityFramework7中缺少功能,我现在更喜欢使用EF6。我尝试删除EF7,然后在PM中应用EF6,如下所示:Uninstall-PackageEntityFrameworkInstall-PackageEntityFramework-version6.1.3未返回任何错误,并且project.json文件似乎已相应更新。虽然,没有可用的DbContext。这可能吗?如果是,我该如何离开这里?我是否需要web.config才能与EF6兼容?是的,这很好用。您需要在创建上下文时手动设置连接字符串,因为它无法从web.config中获取它,因此您可以执行此publicclassMyContext:DbContext{publicMyContext(stringconnectionString):base(connectionString){}}varcontext=newMyContext("myConnectionString");如果您想从config.json获取连接字符串,请尝试此IConfigurationconfiguration=newConfiguration().AddJsonFile("config.json");varconnectionString=configuration["Data:DefaultConnection:ConnectionString"]);如果你想将上下文注入DI容器,那么我添加了像这样的工厂返回新的MyContext(配置[“Data:DefaultConnection:ConnectionString”]);然后在startup.cs中添加services.AddTransient((a)=>MyContextFactory.GetContext());根据所使用的数据库,它可能不像答案那么简单。如果您使用的是MsSql,则无需进行任何配置,接受的答案非常好。但是使用LocalDB可能需要一些配置。例如,MySql需要注册一个提供者[DbConfigurationType(typeof(CodeConfig))]//指向继承自DbConfiguration的类publicclassApplicationDbContext:DbContext{[...]}publicclassCodeConfig:DbConfiguration{publicCodeConfig(){SetDefaultConnectionFactory(newMySql.Data.Entity.MySqlConnectionFactory());SetProviderServices("MySql.Data.MySqlClient",newMySql.Data.MySqlClient.MySqlProviderServices());}}PostgreSql需要将提供者注册到entityFramework和system.data部分。这可以通过使用System.Data.Entity.DbConfiguration.Loaded事件来完成。神谕。查看这篇详细解释的博客文章:http://bleedingnedge.com/2015/11/01/entity-framework-6-with-asp-net-5/你能不能在startup.cs文件中这样做?保存创建工厂//每个请求的新上下文services.AddScoped((s)=>{returnnewMyContext(Configuration["Data:MyConnection:ConnectionString"]);});使用RC版本,这将变为:varbuilder=newConfigurationBuilder().AddJsonFile("appsettings.json").AddEnvironmentVariables();varConfiguration=builder.Build();varconnectionString=Configuration["Data:DefaultConnection:ConnectionString"];json是针对完整的.NETFramework编译的,因为EntityFramework6不支持.NETCore。如果您需要跨平台功能,则需要升级到EntityFrameworkCore。在project.json文件中为完整的.NETFramework指定单个目标:"frameworks":{"net46":{}}然后设置连接字符串和依赖注入publicclassApplicationDbContext:DbContext{publicApplicationDbContext(stringnameOrConnectionString):base(nameOrConnectionString){}}在ConfigureServices的Startup类中,一个工厂方法用于添加带有连接字符串的上下文。上下文应在每个范围内解析一次,以确保性能并确保实体框架的可靠运行。publicvoidConfigureServices(IServiceCollectionservices){services.AddScoped((_)=>newApplicationDbContext(Configuration["Data:DefaultConnection:ConnectionString"]));//配置其余服务}ntityFramework6允许在xml中(在web.config或app.config中)或通过代码指定配置。从ASP.NETCore开始,所有配置都是基于代码的。基于代码的配置是通过创建System.Data.Entity.Config.DbConfiguration的子类并将System.Data.Entity.DbConfigurationTypeAttribute应用于DbContext子类来实现的。我们的配置文件通常如下所示:defaultConnectionFactory元素设置连接工厂。如果未设置此属性,则默认为SqlConnectionProvider。另一方面,如果提供了值,则给定的类将用于使用其CreateConnection方法创建DbConnection。如果给定的工厂没有默认构造函数,则必须添加构造对象的参数[DbConfigurationType(typeof(CodeConfig))]//指向继承自DbConfiguration的类publicclassApplicationDbContext:DbContext{[...]}public类CodeConfig:DbConfiguration{publicCodeConfig(){SetProviderServices("System.Data.SqlClient",System.Data.Entity.SqlServer.SqlProviderServices.Instance);}}本文将向您展示如何使用EntityFramework6。https://docs.asp.net/en/latest/data/entity-framework-6.html以上就是C#学习教程分享的全部内容:HowtouseEntityFramework6.x(MVC6)inAsp.Net5,如果对你有用,需要详细了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: