009.Working with SQL Server LocalDB --【在sql server localdb 上操作数据】

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容器中:

 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 文件获取链接字符串的值:

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.

当你将应用部署到一个测试或生产服务器,你可以使用环境变量或其它的方法来设置一个真实的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

  • Right click on the Movie table > View Designer

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

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 菜单

Seed the database

向数据库初始化值

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

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

  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.

如果数据库中有数据记录,就会直接返回,如果没有就会添加这些初始数据。

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  方法的最后一行:

 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

  • 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.

应用显示出初始化后的数据:

                                         蒙

                                    2017-08-14 15:22 周一

时间: 2024-10-10 04:50:07

009.Working with SQL Server LocalDB --【在sql server localdb 上操作数据】的相关文章

Comparison of SQL Server Compact, SQLite, SQL Server Express and LocalDB

Information about LocalDB comes from here and SQL Server 2014 Books Online. LocalDB is the full SQL Server Express engine, but invoked directly from the client provider. It is a replacement of the current "User Instance" feature in SQL Server Ex

SQL server数据库的在server 2008R2上的安装及基本管理

         SQL server数据库的在server 2008R2上的安装及基本管理(一) 选择SQL的数据库的镜像文件 双击setup.ext 执行安装程序 这里选择安装项,并选择全新安装 安装的环境监测全部通过 因为这里是使用的破解版的镜像,所以会自动生成密钥 再一次检测安装环境 这里选择第一项 这里选择全部的功能 这里选择默认的实例名 这里将系统的内置账户添加到服务中,NT 这里选择混合式身份 验证,并输入sa的密码.并添加本地的管理员 这里添加本地的管理员账户 选择第一项 开始安

java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect

java.sql.SQLException: null, message from server: “Host ‘xxx’ is not allowed to connect 2014年06月29日 ⁄ 综合 ⁄ 共 637字 ⁄ 字号 小 中 大 ⁄ 评论关闭 java.sql.SQLException: null,  message from server: "Host 'xxx' is not allowed to connect to this MySQL server": j

SQL Server -&gt;&gt; Memory Allocation Mechanism and Performance Analysis(内存分配机制与性能分析)之 -- Minimum server memory与Maximum server memory

Minimum server memory与Maximum server memory是SQL Server下配置实例级别最大和最小可用内存(注意不等于物理内存)的服务器配置选项.它们是管理SQL Server内存的途径之一. Minimum server memory与Maximum server memory Minimum server memory(MB): 最小服务器内存.一旦超过这个线就不会再把内存换回去.但是也不是说SQL Server一启动马上就申请这么多的内存. Maximum

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第1部分)

为了缩小读取操作所涉及范围,本文首先着眼于简单的SELECT查询,然后引入执行更新操作有关的附加过程.最后你会读到,优化性能时SQLServer使用还原工具的相关术语和流程. 关系和存储引擎 如图所示,SQL Server被分为2个主要引擎:关系引擎和存储引擎.关系引擎有时也被称为查询处理器,因为它的主要功能是查询优化和执行.它包含检查查询语法和准备查询树的命令解析器:查询优化器毫无疑问是任何数据库系统中皇冠上的宝石:查询执行器对执行(查询计划)负责. 存储引擎对所有数据输入.输出管理负责.它包

windows server 2008下装SQL 2008R2x64

1. 在windows server 2008下装SQL 2008出现 This SQL Server Setup media is not supported on a X64 system 使用虚拟光驱(DAEMON Tools Lite)安装即可. 2.安装步骤: 1.需要创建一个windows用户,用于SQL代理

SQL Server 2012:SQL Server体系结构——一个查询的生命周期(第2部分)

计划缓存(Plan Cache) 如果SQL Server已经找到一个好的方式去执行一段代码时,应该把它作为随后的请求重用,因为生成执行计划是耗费时间且资源密集的,这样做是有有意义的. 如果没找到被缓存的计划,然后命令分析器(Command Parser)在T-SQL基础上生成一个查询树(query tree).查询树(query tree)的内部结构是通过树上的每个结点代表查询中需要的执行操作.这个树然后被传给查询优化器(Query Optimizer)去处理.我们的简单查询没有一个存在的计划

远程mysql_java.sql.SQLException: null, message from server: &quot;Host &#39;xxx&#39; is not allowed to connect

最近在做一个项目,里面要用到远程mysql数据库. 我想把我想要实现的功能说一下吧: 1 /** 2 * 是这样的功能:我的机器是A,我现在先利用我自己写的一个jdbc方法<br> 3 * 调用远程的机器B上安装的数据库<br> 4 * 然后把我想要CRUD操作B机器上的数据库<br> 5 * 或者简单一点,可以这样认为,我现在在机器A上面有一些数据<br> 6 * 我要把这些数据插入到远程的机器B的mysql数据库里面去<br> 7 * 就是这

SQL Server快速生成SQL增删改查语句

你还在手敲代码生成SQL语句吗?你还在为因为马虎出错的SQL语句而感到无语吗?你还在为不知怎样表达复杂的SQL语句而纠结吗?如果你的回答为"是",那你就OUT啦,快来试试应用SQL Server资源管理器快速生成SQL语句吧. 首先,打开SQL Server2008,在菜单栏"查询"下拉菜单中找到"在编辑器中设计查询",如下图: 在打开的查询设计器窗口中添加要进行操作的数据库表. 在添加的表内下方空白部分右键单击鼠标,在弹出菜单中单击"