EF-CodeFirst模式

简介: EF-CodeFirst模式

查看更新SQL:在 Package Manager Console 中运行命令 Update-Database -Script -SourceMigration: $InitialDatabase

model中使用枚举类型,查询结果返回枚举的字符串

[Newtonsoft.Json.JsonConverter(typeof(Newtonsoft.Json.Converters.StringEnumConverter))]
public InterViewState state { set; get; }

数据字典类中,如果有枚举类型并且希望序列化后的json中显示的是枚举的名称,需要在字段上加上:[JsonConverter(typeof(StringEnumConverter))]


例如:


[JsonConverter(typeof(StringEnumConverter))]
public EnumCarStockState stockState { get; set; }


1.添加Newtonsoft.Json


2.添加MySql EF支持


3.开发Model类

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TestEFCodeFirst.Model
{
    [Table("yf_Order")]
    public class Order
    {
        public int Id { set; get; }
        [StringLength(50)]
        public string OrderNo { set; get; }
        public int UserId { set; get; }
        [ForeignKey("UserId")]
        public virtual User User { set; get; }
    }
}

4.在DbContext中关联Model

20160818165852910.png

5.数据迁移

  <1>添加DbContext数据迁移支持

    [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]

20160818165618536.png

<2>工具——NuGet包管理器——程序包管理器控制台


       1>Enable-Migrations


       2>Add-Migration xxx


       3>Update-Database


  <3> 获取数据库更改sql脚本


得到SQL脚本


 如果其它开发人员也希望在他们自己的机器上拥有这些更改,他们只需在我们 check in 代码至 source control 的时候做一次同步即可,一旦他们拥有了这些迁移,只需运行命令 Update-Database 就可以把这些更改应用于本地。但是如果我们想把这些更改推送至测试服务器或生产服务器,我们也许需要一份 SQL 脚本提供给 DBA


在运行 Update-Database 的时候指定 -Specify 标记,我们就能够使得这些更改被写入一个脚本中而不是被应用,我们同时也会为此脚本指定源迁移和目标迁移,例如我们希望产生的脚本是从一个空数据库($InitialDatabase)到最新的版本(AddPostAbstract 迁移);(注意:如果你没有指定目标迁移,那么迁移将始终更新至最新版本;如果你没有指定源迁移,那么迁移将以数据库目前状态为初始)

在 Package Manager Console 中运行命令 Update-Database -Script -SourceMigration: $InitialDatabase


相关文章
|
前端开发
react hooks 使用小技巧—useState传值函数
当使用useState时,传入一个函数作为初始状态值的参数和传入一个值的参数的效果是一样的,都会在组件渲染时被调用,但它们的使用场景略有不同。
836 1
|
安全 搜索推荐 SEO
如何完整搭建一个独立站?
如何完整搭建一个独立站?没有建站基础和经验、能不能自己建站?
1254 14
|
数据采集
芝麻代理、快代理、神龙代理、小象代理…如何挑选适合的代理IP?
本文介绍了如何选择适合项目需求的代理IP服务。首先,需明确具体应用场景和需求,不同场景对代理IP的要求各异。其次,选择合适的代理类型,如HTTP、HTTPS或SOCKS5。稳定性和速度是核心要素,需关注代理IP的稳定性指标和网络延迟。成本方面,应综合考量性价比,并进行实际测试。最后,选择提供优质服务支持的供应商,以确保问题能够及时解决。通过这些步骤,可以找到最适合项目的代理IP服务。
|
消息中间件 Kafka 测试技术
【Kafka揭秘】Leader选举大揭秘!如何打造一个不丢失消息的强大Kafka集群?
【8月更文挑战第24天】Apache Kafka是一款高性能分布式消息系统,利用分区机制支持数据并行处理。每个分区含一个Leader处理所有读写请求,并可有多个副本确保数据安全与容错。关键的Leader选举机制保障了系统的高可用性和数据一致性。选举发生于分区创建、Leader故障或被手动移除时。Kafka提供多种选举策略:内嵌机制自动选择最新数据副本为新Leader;Unclean选举快速恢复服务但可能丢失数据;Delayed Unclean选举则避免短暂故障下的Unclean选举;Preferred选举允许基于性能或地理位置偏好指定特定副本为首选Leader。
329 5
|
NoSQL Linux 开发工具
Linux相关操作
几个Linux中的基本操作,包括如何使用vim编辑文件、保存并退出,以及如何查看进程ID和端口号并结束/杀死进程。
75 0
Linux相关操作
195Echarts - 自定义系列(Error Scatter on Catesian)
195Echarts - 自定义系列(Error Scatter on Catesian)
52 0
|
JavaScript
websocket | 浅浅的封装一下
在写websocket的时候,很多页面都需要使用,每个页面重复写,太麻烦,于是先浅浅的封装一下。
149 0
|
前端开发 Java Spring
SpringMVC框架整合(搭建框架——测试——上传图像) 1
SpringMVC框架整合(搭建框架——测试——上传图像)
|
存储 算法
TreeSet 和 HashSet 的区别
TreeSet 和 HashSet 的区别
95 0
|
存储 Linux 容器
以openEuler操作系统探讨常见的发布包
以openEuler操作系统探讨常见的发布包
366 0
以openEuler操作系统探讨常见的发布包