Working with SQL Server LocalDB

在sql server localdb
上操作数据

2017-3-7 2 分钟阅读时间长度 

正文内容

1.SQL Server Express
LocalDB

SQL Server Express
LocalDB
 
sql server 的三个简化免费版本

2.Seed the
database

伊始化数据库的开头表数据

By Rick Anderson

The MvcMovieContext object handles the task of connecting to the
database and mapping Movie objects to database records.

MvcMovieContext
对象处理了链接数据库与映射Movie 对象到表记录的职分.

The database context is registered with the Dependency
Injection
 container
in the ConfigureServices method in the Startup.cs file:

DB上下文在Startup.cs
文件的ConfigureServices 方法中被注册到了DI容器中:

json 1json 2

 1 public void ConfigureServices(IServiceCollection services)
 2 
 3 {
 4 
 5     // Add framework services.
 6 
 7     services.AddMvc();
 8 
 9  
10 
11     services.AddDbContext<MvcMovieContext>(options =>
12 
13             options.UseSqlServer(Configuration.GetConnectionString("MvcMovieContext")));
14 
15 }

C# code

The ASP.NET
Core Configuration system
reads the ConnectionString.

Asp.net core
的布署类别读取了ConnectionString 的安顿的值。

For local development, it gets the connection string from
the appsettings.json file:

对于地点开发,它从appsettings.json
文件获取链接字符串的值:

json 3json 4

1 "ConnectionStrings": {
2 
3   "MvcMovieContext": "Server=(localdb)\\mssqllocaldb;Database=MvcMovieContext-20613a4b-deb5-4145-b6cc-a5fd19afda13;Trusted_Connection=True;MultipleActiveResultSets=true"
4 
5 }

JSON Code

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.

当您将动用安插到二个测试或生育服务器,你能够应用环境变量或此外的点子来安装1个真真的db链接字符串的值。

See Configuration for
more information.

查看Configuration
获取越来越多音信。

SQL Server Express LocalDB

(八个简化的免费的轻量的sql
server 版本)

LocalDB is a lightweight version of the SQL Server Express Database
Engine that is targeted for program development.

LocalDB 是 SQL Server Express
Database Engine 的二个轻量版本,目标是地面包车型大巴主次支付。

LocalDB starts on demand and runs in user mode, so there is no complex
configuration.

LocalDB
以用户情势直接初步询问即可,因而并未复杂的配置。

By default, LocalDB database creates “*.mdf” files in
the C:/Users/<user> directory.

暗中认可情状下,LocalDB
会在C:/Users/<user> 文件夹下创制”*.mdf” 数据库文件。

  • From the View menu, open SQL Server Object Explorer (SSOX).

View  菜单,打开 SQL
Server Object Explorer

json 5

  • Right click on the Movie table > View Designer

右击 Movie  表,点击  >
View Designer
菜单

json 6

json 7

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

只顾PK图标在ID
字段旁边,EF暗中同意会接纳ID做为多个PK。

  • Right click on the Movie table > View Data

右击 Movie 表,选择 > View
Data
菜单

json 8

json 9

Seed the database

向数据库发轫化值

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

Models
文件夹下新建一个名为SeedData
类,用上边的代码替换掉自动生成的代码:

json 10json 11

  1 using Microsoft.EntityFrameworkCore;
  2 
  3 using Microsoft.Extensions.DependencyInjection;
  4 
  5 using System;
  6 
  7 using System.Linq;
  8 
  9  
 10 
 11 namespace MvcMovie.Models
 12 
 13 {
 14 
 15     public static class SeedData
 16 
 17     {
 18 
 19         public static void Initialize(IServiceProvider serviceProvider)
 20 
 21         {
 22 
 23             using (var context = new MvcMovieContext(
 24 
 25                 serviceProvider.GetRequiredService<DbContextOptions<MvcMovieContext>>()))
 26 
 27             {
 28 
 29                 // Look for any movies.
 30 
 31                 if (context.Movie.Any())
 32 
 33                 {
 34 
 35                     return;   // DB has been seeded
 36 
 37                 }
 38 
 39  
 40 
 41                 context.Movie.AddRange(
 42 
 43                      new Movie
 44 
 45                      {
 46 
 47                          Title = "When Harry Met Sally",
 48 
 49                          ReleaseDate = DateTime.Parse("1989-1-11"),
 50 
 51                          Genre = "Romantic Comedy",
 52 
 53                          Price = 7.99M
 54 
 55                      },
 56 
 57  
 58 
 59                      new Movie
 60 
 61                      {
 62 
 63                          Title = "Ghostbusters ",
 64 
 65                          ReleaseDate = DateTime.Parse("1984-3-13"),
 66 
 67                          Genre = "Comedy",
 68 
 69                          Price = 8.99M
 70 
 71                      },
 72 
 73  
 74 
 75                      new Movie
 76 
 77                      {
 78 
 79                          Title = "Ghostbusters 2",
 80 
 81                          ReleaseDate = DateTime.Parse("1986-2-23"),
 82 
 83                          Genre = "Comedy",
 84 
 85                          Price = 9.99M
 86 
 87                      },
 88 
 89  
 90 
 91                    new Movie
 92 
 93                    {
 94 
 95                        Title = "Rio Bravo",
 96 
 97                        ReleaseDate = DateTime.Parse("1959-4-15"),
 98 
 99                        Genre = "Western",
100 
101                        Price = 3.99M
102 
103                    }
104 
105                 );
106 
107                 context.SaveChanges();
108 
109             }
110 
111         }
112 
113     }
114 
115 }

C# Code

If there are any movies in the DB, the seed initializer returns and no
movies are added.

借使数据库中有数量记录,就会平昔回到,假使没有就会加上那些伊始数据。

json 12json 13

1 if (context.Movie.Any())
2 
3 {
4 
5     return;   // DB has been seeded.
6 
7 }

C# Code

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

把多少初步化类添加到Startup.cs
文件的Configure  方法的末段一行:

json 14json 15

 1             app.UseStaticFiles();
 2 
 3             app.UseMvc(routes =>
 4 
 5             {
 6 
 7                 routes.MapRoute(
 8 
 9                     name: "default",
10 
11                     template: "{controller=Home}/{action=Index}/{id?}");
12 
13             });
14 
15  
16 
17             SeedData.Initialize(app.ApplicationServices);
18 
19         }
20 
21     }
22 
23 }

C# Code

Test the app

测试应用

  • Delete all the records in the DB. You can do this with the delete
    links in the browser or from SSOX.

要刨除db中的全体数据记录,你能够在
SSOX 中式点心击删除链接即可。

  • Force the app to initialize (call the methods in the Startup class)
    so the seed method runs.

强制行使初阶化,在 Startup 
类中seed 方法会被实践。

To force initialization, IIS Express must be stopped and restarted. You
can do this with any of the following approaches:

为了强制开首化,iis express
必须重启一下。你能够接纳以下方法的任一种来成功:

  • Right click the IIS Express system tray icon in the notification
    area and tap Exit or Stop Site

右击系统托盘上通报区域的iis图标,并点击
Exit or Stop Site

json 16

json 17

  • If you were running VS in non-debug mode, press F5 to run in debug
    mode

如若您运转vs在非调节和测试方式,按F5运作进入调节和测试方式

  • If you were running VS in debug mode, stop the debugger and press F5

一旦你运转vs在调节和测试格局,结束调节和测试并按下F5

The app shows the seeded data.

选拔展现出开始化后的数据: 

json 18

 

 

 

 

                                         蒙

                                    2017-08-14
15:22 周一

 

相关文章