打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Working with SQL Server LocalDB — ASP.NET documen...

Working with SQL Server LocalDB?

424 of 445 people found this helpful

By Rick Anderson

The ApplicationDbContext class handles the task of connecting to the database and mapping Movie objects to database records. The database context is registered with the Dependency Injection container in the ConfigureServices method in the Startup.cs file:

// This method gets called by the runtime. Use this method to add services to the container.public void ConfigureServices(IServiceCollection services){ // Add framework services. services.AddDbContextApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString('DefaultConnection')));

The ASP.NET Core Configuration system reads the ConnectionString. For local development, it gets the connection string from the appsettings.json file:

{ 'ConnectionStrings': { 'DefaultConnection': 'Server=(localdb)\\mssqllocaldb;Database=aspnet-MvcMovie-7db2893b-375e-48bd-86a3-bb9779b72ebe;Trusted_Connection=True;MultipleActiveResultSets=true' }, 'Logging': { 'IncludeScopes': false,

When you deploy the app to a test or production server, you can use an environment variable or another approach to set the connection string to a real SQL Server. See Configuration .

SQL Server Express LocalDB?

LocalDB is a lightweight version of the SQL Server Express Database Engine that is targeted for program development. LocalDB starts on demand and runs in user mode, so there is no complex configuration. By default, LocalDB database creates “*.mdf” files in the C:/Users/ directory.

  • From the View menu, open SQL Server Object Explorer (SSOX).
  • Right click on the Movie table > View Designer

Note the key icon next to ID. By default, EF will make a property named ID the primary key.

  • Right click on the Movie table > View Data

Seed the database?

Create a new class named SeedData in the Models folder. Replace the generated code with the following:

using Microsoft.EntityFrameworkCore;using Microsoft.Extensions.DependencyInjection;using MvcMovie.Data;using System;using System.Linq;namespace MvcMovie.Models{ public static class SeedData { public static void Initialize(IServiceProvider serviceProvider) { using (var context = new ApplicationDbContext( serviceProvider.GetRequiredServiceDbContextOptionsApplicationDbContext>>())) { if (context.Movie.Any()) { return; // DB has been seeded } context.Movie.AddRange( new Movie { Title = 'When Harry Met Sally', ReleaseDate = DateTime.Parse('1989-1-11'), Genre = 'Romantic Comedy', Price = 7.99M }, new Movie { Title = 'Ghostbusters ', ReleaseDate = DateTime.Parse('1984-3-13'), Genre = 'Comedy', Price = 8.99M }, new Movie { Title = 'Ghostbusters 2', ReleaseDate = DateTime.Parse('1986-2-23'), Genre = 'Comedy', Price = 9.99M }, new Movie { Title = 'Rio Bravo', ReleaseDate = DateTime.Parse('1959-4-15'), Genre = 'Western', Price = 3.99M } ); context.SaveChanges(); } } }}

Notice if there are any movies in the DB, the seed initializer returns.

if (context.Movie.Any()) { return; // DB has been seeded }

Add the seed initializer to the end of the Configure method in the Startup.cs file:

app.UseMvc(routes => { routes.MapRoute( name: 'default', template: '{controller=Home}/{action=Index}/{id?}'); }); SeedData.Initialize(app.ApplicationServices);}

Test the app

  • Delete all the records in the DB. You can do this with the delete links in the browser or from SSOX.
  • Force the app to initialize (call the methods in the Startup class) so the seed method runs. To force initialization, IIS Express must be stopped and restarted. You can do this with any of the following approaches:

Note

If the database doesn’t initialize, put a break point on the line if (context.Movie.Any()) and start debugging.

The app shows the seeded data.

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
将SQL SERVER数据库改成MySql
ASP.NET中利用VWD操作数据库(1-2)
ASP.NET MVC 数据库 | 菜鸟教程
本地数据概述
SQL Server LocalDB 在 ASP.NET中的应用
ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服