Asp.net core Enum as string + ef core value convertor
更新 : 2019-06-08
build in convertor
https://docs.microsoft.com/en-us/ef/core/modeling/value-conversions#built-in-converters
注意 : value null 是不走 convertor 的哦, 所以我们也不需要顾虑 nullable 的情况.
更新 2019-06-01
string jsonWithConverter = JsonConvert.SerializeObject(new Dada { name = "keatkeat", type = Type.Completed }, new StringEnumConverter());
写 c# 我们喜欢用 enum. 但是 enum to sql, enum to fronend 都是麻烦.
因为 enum 一般会转换成 int 而不是 string. 可是这样就不可读了.
所以呢,我们的要动点手脚
ef core convert
modelBuilder.Entity<Order>().Property(p => p.status).IsRequired().HasMaxLength().HasConversion(
v => v.ToString(),
v => (OrderStatus)Enum.Parse(typeof(OrderStatus), v)
);
有了这个在数据库就可以看见 string 了.
然后是 web api
services.AddMvc(options =>
{
options.EnableEndpointRouting = false;
})
.AddJsonOptions(options =>
{
options.SerializerSettings.Converters.Add(new StringEnumConverter());
})
这样 GET 就可以输出 string 了, POST 的时候 binding, asp.net core 会自动转换, 所以前端传 string or int 都可以.
OData
非常聪明,啥也不用弄,它本来就输出 string ... 也有点恐怖啦..
typescript
enum StringStatus {
pending = 'pending',
completed = 'completed'
}
enum NumberStatus {
pending,
completed = 13
}
console.log(StringStatus.pending); // 'pending'
console.log(NumberStatus.pending); //
console.log(NumberStatus.completed); //
Asp.net core Enum as string + ef core value convertor的更多相关文章
- ASP.NET Core 开发 - Entity Framework (EF) Core
EF Core 1.0 Database First http://www.cnblogs.com/linezero/p/EFCoreDBFirst.html ASP.NET Core 开发 - En ...
- ASP.NET Core 开发-Entity Framework (EF) Core 1.0 Database First
ASP.NET Core 开发-Entity Framework Core 1.0 Database First,ASP.NET Core 1.0 EF Core操作数据库. Entity Frame ...
- .NET Core 1.0、ASP.NET Core 1.0和EF Core 1.0简介
.NET Core 1.0.ASP.NET Core 1.0和EF Core 1.0简介 英文原文:Reintroducing .NET Core 1.0, ASP.NET Core 1.0, and ...
- 在Asp.Net Core 5 中使用EF Core连接MariaDB
升级到Asp.Net Core 5,使用EF Core连接MariaDB,使用的Nuget包Pomelo.EntityFrameworkCore.MySql也升级到了5.0.0-alpha.2,然后发 ...
- 【.Net Core 学习系列】-- EF Core 实践(Code First)
一.开发环境: VS2015, .Net Core 1.0.0-preview2-003156 二解决方案: 新建项目: File --> New --> Project --> ...
- 【.Net Core 学习系列】-- EF Core实践(DB First)
一.开发环境: VS2015, .Net Core 1.0.0-preview2-003156 二.准备数据: CREATE DATABASE [Blogging]; GO USE [Blogging ...
- [翻译 EF Core in Action 1.9] 掀开EF Core的引擎盖看看EF Core内部是如何工作的
Entity Framework Core in Action Entityframework Core in action是 Jon P smith 所著的关于Entityframework Cor ...
- ASP.NET Core MVC+Layui使用EF Core连接MySQL执行简单的CRUD操作
前言: 本章主要通过一个完整的示例讲解ASP.NET Core MVC+EF Core对MySQL数据库进行简单的CRUD操作,希望能够为刚入门.NET Core的小伙伴们提供一个完整的参考实例.关于 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 10. 使用EF Core
支持的数据库:可以查看官方网站 https://docs.microsoft.com/en-us/ef/core/providers/ 安装了VS2017后会安装了LocalDB,验证localDB ...
随机推荐
- mysql数据库学习
1,服务端和客户端 MySQL 包括服务端和客户端,服务端是MySQL server,客户端包括命令行客户端和图形用户客户端: 命令行客户端:mysql,mysqladmin,mysqldump ( ...
- 【MyBatis】实现in操作符在WHERE 子句中规定多个值
Mapper.xml中写: <select id="selectIdsByDate" resultType="java.lang.Long"> se ...
- Rancher Server部署方式及Rancher HA环境部署
类似Rancher这种的容器管理和编排工具,它可以很快地让每个组织获得高效的弹性集群管理能力.当前技术世界的发展形势就是让开发人员从繁琐的应用配置和管理中解放出来,使用容器镜像来处理复杂的程序运行依赖 ...
- vi/vim命令使用
首先讲一些vim和vi的区别: 它们都是多模式编辑器,不同的是vim是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面.vim的这些优势主要体现在以下几个方面:1.多级撤消我们知道 ...
- Spring + MyBatis 框架下处理数据库异常
一.概述 使用JDBC API时,很多操作都要声明抛出java.sql.SQLException异常,通常情况下是要制定异常处理策略.而Spring的JDBC模块为我们提供了一套异常处理机制,这套异常 ...
- centos源码安装mysql5.7
http://blog.csdn.net/langzi7758521/article/details/51435985
- 从Myeclipse到IntelliJ IDEA-——让你摆脱鼠标,全键盘操作
注:本文是对原文章(https://blog.csdn.net/luoweifu/article/details/13985835)做的补充 快捷键对比 Myeclipse IDEA 说明 Ctrl+ ...
- python基础知识(集合)
集合 可变集合set()/不可变集合frozenset() {} 大写的拉丁字母 用于保存不重复元素.无序不能通过索引来获取 集合的创建 空集合 使用set()函数 变量名 = set() 集合的添 ...
- 【AMAD】cookiecutter-django -- 是一个构建Django项目的脚手架工具
动机 简介 个人评分 动机 Django内置的命令django-admin startproject其实并不好用,在你上线之前八成已经把它改的面目全非了. 简介 cookiecutter-django ...
- Kubernetes 相关镜像pull 不下来问题收集
1. 可在相关的镜像前添加 keveon 或者 mirrorgooglecontainers 就可以下载镜像, 然后在修改 tag docker pull mirrorgooglecontainers ...