zoukankan      html  css  js  c++  java
  • ASP.NET CORE RAZOR :向 Razor 页面应用添加模型

    本文来自:https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/razor-pages/model

    在本部分中将添加用于管理数据库中的电影的类。 可以结合使用这些类和 Entity Framework Core (EF Core) 来处理数据库。 EF Core 是对象关系映射 (ORM) 框架,可以简化必须要编写的数据访问代码。
    要创建的模型类称为 POCO 类(源自“简单传统 CLR 对象”),因为它们与 EF Core 没有任何依赖关系。 它们定义数据库中存储的数据属性。
    在本教程中,首先要编写模型类,然后 EF Core 将创建数据库。 有一种备选方法(此处未介绍):从现有数据库生成模型类

    添加数据模型
    在解决方案资源管理器中,右键单击“RazorPagesMovie”项目 >“添加” > “新建文件夹”。 将文件夹命名为“Models”。
    右键单击“Models”文件夹。 选择“添加” > “类”。 将类命名为“Movie”,并添加以下属性:
    向 Movie 类添加以下属性:

     1 using System;
     2 
     3 namespace RazorPagesMovie.Models
     4 {
     5     public class Movie
     6     {
     7         public int ID { get; set; }
     8         public string Title { get; set; }
     9         public DateTime ReleaseDate { get; set; }
    10         public string Genre { get; set; }
    11         public decimal Price { get; set; }
    12     }
    13 }

    数据库需要 ID 字段作为主键。ID字段应该是EF的要求。

    添加数据库上下文类

    向“Models”文件夹添加以下名为 MovieContext.cs 的 DbContext 派生类:(这里要引入Microsoft.EntityFrameworkCore命名空间,结合EF,DB first)

    using Microsoft.EntityFrameworkCore;
    
    namespace RazorPagesMovie.Models
    {
        public class MovieContext : DbContext
        {
            public MovieContext(DbContextOptions<MovieContext> options)
                    : base(options)
            {
            }
    
            public DbSet<Movie> Movie { get; set; }
        }
    }

    前面的代码为实体集创建 DbSet 属性。 在实体框架术语中,实体集通常与数据库表相对应,实体与表中的行相对应。


    添加数据库连接字符串

    将连接字符串添加到 appsettings.json 文件。

    {
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Warning"
        }
      },
      "ConnectionStrings": {
        "DefaultConnection": "Server=192.168.137.216;Database=MovieCore;User Id=sa;Password=aaa;"
      }
    }

    注册数据库上下文

    使用 Startup.cs 文件中的依存关系注入容器注册数据库上下文。需要引用命名空间:using RazorPagesMovie.Models;

    public void ConfigureServices(IServiceCollection services)
    {
        // requires 
        // using RazorPagesMovie.Models;
        // using Microsoft.EntityFrameworkCore;
    
        services.AddDbContext<MovieContext>(options =>
            options.UseSqlServer(Configuration.GetConnectionString("MovieContext")));
        services.AddMvc();
    }

    生成项目以验证有没有任何错误存在。(现在运行网站虽然是成功的,但是数据库还没有自动添加)

    添加基架工具并执行初始迁移
    在本部分中,使用程序包管理器控制台 (PMC) 执行以下操作:
    添加 Visual Studio Web 代码生成包。 必须添加此包才能运行基架引擎。
    添加初始迁移。
    使用初始迁移来更新数据库。
    从“工具”菜单中,选择“NuGet 包管理器” > “包管理器控制台”。

     

    在 PMC 中,输入以下命令:

    Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design
    Add-Migration Initial
    Update-Database

    Install-Package 命令安装运行基架引擎所需的工具。
    Add-Migration 命令生成用于创建初始数据库架构的代码。 此架构以(Models/MovieContext.cs 文件中的)DbContext 中指定的模型为基础。 Initial 参数用于为迁移命名。 可以使用任意名称,但是按照惯例应选择描述迁移的名称。 有关详细信息,请参阅迁移简介。
    Update-Database 命令在用于创建数据库的 Migrations/<time-stamp>_InitialCreate.cs 文件中运行 Up 方法。


    搭建“Movie”模型的基架(就是自动生成添加、修改、删除、列表等页面)

    按下图提示操作

    从命令行(在包含 Program.cs、Startup.cs 和 .csproj 文件的项目目录中)中运行如下命令:

    dotnet aspnet-codegenerator razorpage -m Movie -dc MovieContext -udl -outDir PagesMovies --referenceScriptLibraries

     执行完毕后显示

    如果收到错误:

    No executable found matching command "dotnet-aspnet-codegenerator"

    打开一个到项目目录(包含 Program.cs、Startup.cs 和 .csproj 文件的目录)的命令 shell。
    如果收到错误:

    The process cannot access the file 
    'RazorPagesMovie/bin/Debug/netcoreapp2.0/RazorPagesMovie.dll' 
    because it is being used by another process.

    退出 Visual Studio,然后重新运行命令。
    下表详细说明了 ASP.NET Core 代码生成器的参数:

    参数 描述
    -m 模型的名称。
    -dc 数据上下文。
    -udl 使用默认布局。
    -outDir 用于创建视图的相对输出文件夹路径。
    --referenceScriptLibraries 向“编辑”和“创建”页面添加 _ValidationScriptsPartial


    使用 h 开关获取 aspnet-codegenerator razorpage 命令方面的帮助:

    dotnet aspnet-codegenerator razorpage -h

    测试应用

    运行应用并将 /Movies 追加到浏览器中的 URL (http://localhost:port/movies)。
    测试“创建”链接。

    测试“编辑”、“详细信息”和“删除”链接。
    如果收到 SQL 异常,则验证是否已运行迁移并更新了数据库:
    下一个教程介绍由基架创建的文件。






  • 相关阅读:
    等式
    Lemon 评测软件用法
    同花顺
    浅谈二分图的最大匹配和二分图的KM算法
    LCT总结
    5.30模拟赛
    树上斜率优化
    5.22 noip模拟赛
    KMP,HASH,Trie,AC自动机
    splay总结
  • 原文地址:https://www.cnblogs.com/djd66/p/8421154.html
Copyright © 2011-2022 走看看