ASP.NET Core 中文文档 第二章 指南(4.5)使用 SQL Server LocalDB

原文:Working with SQL Server LocalDB
作者:Rick Anderson
翻译: 魏美娟(初见)
校对: 孟帅洋(书缘)张硕(Apple)许登洋(Seay)

ApplicationDbContext 类负责连接数据库并将 Movie 对象和数据记录进行映射。 Startup.cs 文件中,数据库上下文是在 ConfigureServices 方法中用 Dependency Injection 容器进行注册的。

// 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.AddDbContext<ApplicationDbContext>(options => //手动高亮
        options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection"))); //手动高亮

ASP.NET Core Configuration 系统读取 ConnectionString 。在本地开发模式下,它会从 appsettings.json 文件中获取连接字符串。

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

当你部署应用程序到测试服务器或者生产服务器时,你可以使用环境变量或者另一种方法来设置实际 SQL Server 数据库的连接字符串。更多参考 Configuration

SQL Server Express LocalDB

LocalDB是针对程序开发阶段使用的一个SQL Server Express轻量级版本的数据库引擎。 因为LocalDB在用户模式下启动、执行,所以它没有复杂的配置。默认情况下,LocalDB数据库创建的 “*.mdf” 文件在 C:/Users/<user> 目录下。

View 菜单中,打开SQL Server对象资源管理器SQL Server Object Explorer ,(SSOX)).


右击 Movie 表 > 视图设计器(View Designer)


注意钥匙图标后面的 ID。默认情况下,EF将命名为 ID 的属性作为主键。

  • 右击 Movie> 查看数据(View Data)

填充数据库

Models 文件夹中创建一个名叫 SeedData 的新类。用以下代码替换生成的代码。

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.GetRequiredService<DbContextOptions<ApplicationDbContext>>()))
            {
                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();
            }
        }
    }
}

注意,如果数据库上下文中存在 movies,填充初始化器返回。

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

Startup.cs 文件中的 Configure 方法最后添加填充初始化器。

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

    SeedData.Initialize(app.ApplicationServices); //手动高亮
}

测试应用程序

  • 删除数据库中的所有记录。你可以直接在浏览器中点击删除链接或者在 SSOX(SQL Server对象资源管理器)中做这件事。
  • 强制应用程序初始化(在 Startup 类中调用方法),这样填充方法会自动运行。为了强制初始化,IIS Express必须先停止,然后重新启动。可以用下列的任何一个方法来实现:

注意
如果是数据库没有初始化,在 if (context.Movie.Any()) 这行设置断点,并开始调试


应用程序显示了被填充的数据.

返回目录

参考页面:

http://www.yuanjiaocheng.net/entity/dbentityentry-class.html

http://www.yuanjiaocheng.net/Jsp/first.html

http://www.yuanjiaocheng.net/ASPNET-CORE/core-actionresults.html

http://www.yuanjiaocheng.net/CSharp/csharp-delegate.html

http://www.yuanjiaocheng.net/webapi/create-crud-api-1.html

http://www.yuanjiaocheng.net/webapi/first.html

http://www.yuanjiaocheng.net/mvc/mvc-helper-RadioButton.html

http://www.yuanjiaocheng.net/mvc/mvc-controller.html

http://www.yuanjiaocheng.net/entity/modelbrowser.html

http://www.yuanjiaocheng.net/mvc/mvc-architecture.html

http://www.yuanjiaocheng.net/Linq/linq-api.html

时间: 2024-10-24 12:48:19

ASP.NET Core 中文文档 第二章 指南(4.5)使用 SQL Server LocalDB的相关文章

ASP.NET Core 中文文档 第二章 指南(3)用 Visual Studio 发布一个 Azure

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 原文:Getting Started 作者:Rick Anderson 翻译:谢炀(Kiler) 校对:孟帅洋(书缘).刘怡(AlexLEWIS).何镇汐 设置开发环境 安装最新版本的 Azure SDK for Visual Studio 2

ASP.NET Core 中文文档 第二章 指南(4.1)ASP.NET Core MVC 与 Visua

参考页面: http://www.yuanjiaocheng.net/ASPNET-CORE/projectjson.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-configuration.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-middleware.html http://www.yuanjiaocheng.net/ASPNET-CORE/core-exception.htm

ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方

原文 Examining the Details and Delete methods 作者 Rick Anderson 翻译 谢炀(Kiler) 校对 许登洋(Seay).姚阿勇(Mr.Yao) 打开 Movie 控制器并查看 Details 方法: // GET: Movies/Details/5 public async Task<IActionResult> Details(int? id) { if (id == null) { return NotFound(); } var mo

ASP.NET Core 中文文档 第二章 指南(4.3)添加 View

原文:Adding a view 作者:Rick Anderson 翻译:魏美娟(初见) 校对:赵亮(悲梦).高嵩(Jack).娄宇(Lyrics).许登洋(Seay).姚阿勇(Dr.Yao) 本节将修改 HelloWorldController 类,把使用 Razor 视图模板文件为客户端生成 HTML 响应的过程干净利落地封装起来. 您可以使用 Razor 视图引擎创建一个视图模板.基于 Razor 的视图模板的文件使用 .cshtml 作为其扩展名,并用 C# 优雅地输出 HTML.用 R

ASP.NET Core 中文文档 第三章 原理(1)应用程序启动

原文:Application Startup 作者:Steve Smith 翻译:刘怡(AlexLEWIS) 校对:谢炀(kiler398).许登洋(Seay) ASP.NET Core 为你的应用程序提供了处理每个请求的完整控制.Startup 类是应用程序的入口(entry point),这个类可以设置配置(configuration)并且将应用程序将要使用的服务连接起来.开发人员可以在 Startup 类中配置请求管道,该管道将用于处理应用程序的所有请求. 章节: Startup 类 Co

ASP.NET Core 中文文档 第三章 原理(14)服务器

原文:Servers 作者:Steve Smith 翻译:谢炀(Kiler) 校对:许登洋(Seay).姚阿勇(Dr.Yao) ASP.NET Core 已完全从承载应用程序的 Web 服务器环境中分离.ASP.NET Core 可以承载于 IIS 和 IIS Express ,以及使用 Kestrel 和 WebListener HTTP Server 的自承载环境中.此外,开发人员和第三方软件供应商可以创建自定义的服务器来承载 ASP.NET Core 应用程序. 查看和下载示例代码 服务器

ASP.NET Core 中文文档 第三章 原理(2)中间件

原文:Middleware 作者:Steve Smith.Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:许登洋(Seay) 章节: 什么是中间件 用 IApplicationBuilder 创建中间件管道 内置中间件 编写中间件 扩展资源 查看或下载样例代码 什么是中间件 中间件是用于组成应用程序管道来处理请求和响应的组件.管道内的每一个组件都可以选择是否将请求交给下一个组件.并在管道中调用下一个组件之前和之后执行某些操作.请求委托被用来建立请求管道,请求委托处理每一个 H

ASP.NET Core 中文文档 第四章 MVC(3.2)Razor 语法参考

原文:Razor Syntax Reference 作者:Taylor Mullen.Rick Anderson 翻译:刘怡(AlexLEWIS) 校对:何镇汐 什么是 Razor? Razor 是一种基于服务器端代码的可以转换为网页的标记语法.Razor 语法包括 Razor 标记.C# 和 HTML 组成.包含 Razor 的文件通常后缀名为 .cshtml . 渲染 HTML Razor 的默认语言是 HTML.从 Razor 渲染为 HTML 和直接一个 HTML 文件没啥区别,这种 R

ASP.NET Core 中文文档 第三章 原理(7)配置

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 原文:Configuration 作者:Steve Smith.Daniel Roth 翻译:刘怡(AlexLEWIS) 校对:孟帅洋(书缘) ASP.NET Core 支持多种配置选项.应用程序配置数据内建支持读取 JSON.XML 和 IN