重要概念
模型 Model
◼ 模型(Model):是应用的实体类,用于在内存中暂时存储数据,并在数据变化时通知控制器。
◼ 一个简单的C#模型类:
Movie.cs
1 | public class Movie |
ORM
◼ 面向对象开发方法是当今企业级应用主流开发方法。
◼ 关系数据库是企业级应用永久存放数据的主流数据存储系统。
◼ 对象和关系数据是业务实体两种表现形式:业务实体在内存中表现为对象(非持久化存储),在数据库中表现为关系数据(持久化存储) 。
◼ 需要一种技术实现二者间映射,以简化编程,提高系统效率 。
ORM:对象关系映射
◼ ORM (Object Relation Mapping) 是对象/关系映射,它将内存中的对象和数据库中的表建立映射关系。
EF Core
◼ EF Core:Entity Framework Core的简称,是微软提供的ORM数据访问技术。
◼ 特点:轻量化、可扩展、开源和跨平台
创建模型
模型命名:扩展名为.cs
Movie.cs基本代码:
1 | namespace MvcMovie.Models |
模型添加属性:
1 | namespace MvcMovie.Models |
根据需要给属性添加注解:红色部分,如Display
、DataType
1 | public class Movie |
注解需要导入包:using System.ComponentModel.DataAnnotations;
◼
[Display(Name = "...")]
注解:设置显示名称,给字段指定可本地化的字符串◼
[DataType(...)]
注解:设置字段的数据格式类型。(对数据做格式规定)◼
DataType.Date
表示日期格式类型,作用:用户无需在该字段中输入时间信息, 显示时也仅显示日期。(其他类型见下页说明)◼
DataType.Currency
表示货币格式类型 (数据显示时前面带货币符号,如¥)
补充:DataType的一些类型值
DataType类型值 | 说明 |
---|---|
DataType.Currency | 表示货币值 |
DataType.Date | 表示日期值 |
DataType.EmailAddress | 表示电子邮件地址 |
DataType.MultilineText | 表示多行文本 |
DataType.Password | 表示密码值 |
DataType.Time | 表示时间值 |
DataType.Url | 表示一个 URL 值 |
使用 EF Core 框架
EF Core 框架:主要为自动模型生成CRUD功能 (Create、Read、Update 和 Delete)
选择”视图使用EF的MVC控制器” :
配置基架:
基架成功添加:完成了很多任务,其中★为重点
数据库连接串 – 位于 appsettings.json 文件
appsettings.json
1 | { |
ConnectionStrings
:数据库连接串
MvcMovieContext
:数据库上下文
localdb
:VS内置SQLServer Express数据库服务器的名称 // Server = (localdb)\mssqllocaldb;
MvcMovie.Data
:默认的数据库名(也可自行命名,如MyDB) // Database = MvcMovie.Data;
Movies控制器代码:
Movies视图 – 以Index视图为例
数据库上下文代码 – 含有2个重要概念
1 | using Microsoft.EntityFrameworkCore; |
① DbContext:数据库上下文类,封装与数据库和模型相关的功能,依据数据实体状态创建SQL命令,将数据更新保存到数据库中(映射数据库表) ★
② DbSet:实体对象的集合,能把对实体的LINQ查询转换为针对数据库的查询(映射数据库表)★
运行Movie控制器:
EF Core 迁移
创建数据库 ★ ★ ★
- Add-Migration InitialCreate
- Update-Database
迁移命令说明
◼ 命令1:Add-Migration InitialCreate
(InitialCreate:迁移文件名)
◼ 功能:创建数据库迁移。
◼ 数据库迁移信息存储在:Migrations目录/{timestamp}_InitialCreate.cs
文件中 (timestamp:时间戳)
◼ 命令2: Update-Database
◼ 功能:更新数据库(依据第1个命令创建的最新迁移文件)。 (根据时间戳就知道最新的迁移)
◼ 此命令将执行最新迁移文件中的 Up()
方法。
成功迁移之后会创建或更新数据库:
再次运行一下:成功!