在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开发环境:vs2017 版本:15.3.5 项目环境:.net framework 4.6.1 模板asp.net core 2.0 Web应用程序(模型视图控制器) 身份验证:个人用户账号 存储应用内的用户帐户 因为本人并不涉及开发一些中、大规模的应用,所以习惯使用本地数据库,而不是数据库服务,为了方便管理,所以本人的所有项目都是离线数据库文件存储(.mdf)。 下面开始:
一、修改数据库连接。引自“张不水”兄的研究成果。 1、相对路径: 修改appsettings.json文件中的"ConnectionStrings"(第3行) "DefaultConnection": "Data Source=(localdb)\\mssqllocaldb;AttachDbFilename=%CONTENTROOTPATH%\\App_Data\\aspnet123.mdf;Integrated Security=True;Connect Timeout=30;MultipleActiveResultSets=true” 需注意的是:AttachDbFilename=%CONTENTROOTPATH%\\App_Data\\aspnet123.mdf; 使用 ContentRootPath 是将文件放置在项目目录下而不是wwwroot目录下,这样更安全。 ContentRootPath 用于包含应用程序文件。 ContentRoot: C:\MyApp\ 2、修改Startup.cs 自动生成的原始代码: public class Startup { public Startup(IConfiguration configuration) { Configuration = configuration; } public IConfiguration Configuration { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); // Add application services. services.AddTransient<IEmailSender, EmailSender>(); services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseAuthentication(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } } 修改后的代码: ①修改Startup方法为如下 public Startup(IConfiguration configuration,IHostingEnvironment env) { Configuration = configuration; ②添加public IHostingEnvironment _env { get; } ③修改ConfigureServices方法 注销掉原有的services.AddDbContext //添加修改()声明变量conn并做相应处理 修改完成后的代码: public class Startup { public Startup(IConfiguration configuration, IHostingEnvironment env) { Configuration = configuration; //新添加 _env = env; } public IConfiguration Configuration { get; } //新添加 public IHostingEnvironment _env { get; } // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { //services.AddDbContext<ApplicationDbContext>(options => // options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); //添加修改()声明变量conn并做相应处理 string conn = Configuration.GetConnectionString("DefaultConnection"); if (conn.Contains("%CONTENTROOTPATH%")) { conn = conn.Replace("%CONTENTROOTPATH%", _env.ContentRootPath); } //修改默认的连接服务为conn services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(conn)); services.AddIdentity<ApplicationUser, IdentityRole>() .AddEntityFrameworkStores<ApplicationDbContext>() .AddDefaultTokenProviders(); // Add application services. services.AddTransient<IEmailSender, EmailSender>(); services.AddMvc(); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); app.UseBrowserLink(); app.UseDatabaseErrorPage(); } else { app.UseExceptionHandler("/Home/Error"); } app.UseStaticFiles(); app.UseAuthentication(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); } }
3、手动在项目中添加“App_data”文件夹,并复制粘贴一个标准的内容为空的.mdf文件。 为方便大家学习我这里为大家提供了示例数据库。
|
请发表评论