我使用的是Pomole.EntityFrameworkCore.MySql

需要将旧项目中的excels表转成实体,其中有一列是json格式的int[]

当遇到第一张表的时候,我使用了这样的方法来读取

 public string InternalData { get; set; }
private int[] _data;
public double[] Data
{
get
{
if(_data == null)
{
_data = Array.ConvertAll(InternalData.Trim(new []{'[',']'}).Split(','), Double.Parse);
}
return _data;
}//主要是读取,并不涉及修改
}

但是当我遇到第二张表也是这个结构的时候,我觉得多写这样一段代码,多一个属性的命名很讨厌,而且有误用的可能性。所以我只能另求他法。

于是我这样写:

class Primitive
{
public int PrimitiveId { get; set; }
public int Data { get; set; } [Required]
public Reference ReferenceClass { get; set; }
} class Reference
{
public virtual List<Primitive> Data { get; set; }
}

也就是用外键关联另一张表,就是感觉只是一个int数组就加了张表关联,有点杀鸡牛刀的感觉,而且读取的时候还要include一下。

可是当我打开第三张表,发现里面有多个int[]类型的字段的时候!我放弃了。。。

其实,EFCore2.1预览版有了一种方法来convert,大概像这样:

    modelBuilder
.Entity<MyEntity>()
.Property(e => e.Data)
.HasConversion(
v => JsonConvert.SerializeObject(v),
v => JsonConvert.DeserializeObject<int[]>(v));

不过我用的并不是SQLServer,所以只能求助于Pomelo.EntityFrameworkCore.MySql,得到了这样的方法:

class Reference
{
public JsonObject<int[]> Data1 { get; set; }
public JsonObject<int[]> Data2 { get; set; }
}

哈哈哈,so easy。

不过这个json类型只支持mysql5.7+版本。

EFCore.MySql当模型遇到int[]怎么办的更多相关文章

  1. EFCore+Mysql仓储层建设(分页、多字段排序、部分字段更新)

    前沿 园子里已有挺多博文介绍了EFCore+Mysql/MSSql如何进行使用,但实际开发不会把EF层放在Web层混合起来,需要多个项目配合结构清晰的进行分层工作,本文根据个人实践经验总结将各个项目进 ...

  2. Mysql的BigInt(20),Int(20)以及Bigint(32)有区别吗?

    原文: http://stackoverflow.com/questions/3135804/types-in-mysql-bigint20-vs-int20-etcc http://dev.mysq ...

  3. MySQL生成模型

    根据数据库表生成Model using System; using System.Collections.Generic; using System.Data; using System.Text; ...

  4. EFcore与动态模型

    在开发商城系统的时候,大家会遇到这样的需求,商城系统里支持多种商品类型,比如衣服,手机,首饰等,每一种产品类型都有自己独有的参数信息,比如衣服有颜色,首饰有材质等,大家可以上淘宝看一下就明白了.现在的 ...

  5. gorm连接mysql和模型定义那些事

    1. gorm操作mysql: 1.1 安装gorm gorm官网: https://gorm.io/zh_CN/docs/connecting_to_the_database.html gorm的g ...

  6. mysql中bigint、int、mediumint、smallint 和 tinyint的取值范围

    mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigint.int.mediumint.smallint 和 tinyint的语 ...

  7. mysql数据类型——整型INT(m)

    1.整形分为四种 tinyint smallint mediumint int bigint 注意: 右侧的取值范围是在未加unsigned关键字的情况下,如果加了unsigned,则最大值翻倍,如t ...

  8. MySQL整数类型说明 int(11) vs int(20)

    整数类型后面跟的是显示的宽度.M指示最大显示宽度.最大有效显示宽度是255.显示宽度与存储大小或类型包含的值的范围无关. 实践出真知: mysql> create table test2 ( a ...

  9. mysql中timestamp,datetime,int类型的区别与优劣

    转载请注明来自 souldak,微博: @evagle 以下内容 整合筛选自互联网: int 1. 占用4个字节 2. 建立索引之后,查询速度快 3. 条件范围搜索可以使用使用between 4. 不 ...

随机推荐

  1. Kotlin零碎总结

    1.对于Kotlin的包方法其实对应Java而言是静态方法,如Entrance.kt文件的外部有fun main(...方法,那么编译成字节码后就是Java的Entrance类里有public sta ...

  2. 快速排序 JavaScript 实现

    作为算法目录下的第一篇博文,快速排序那是再合适不过了.作为最基本最经典的算法之一,我觉得每个程序员都应该熟悉并且掌握它,而不是只会调用库函数,知其然而不知其所以然. 排序算法有10种左右(或许更多), ...

  3. IGServer

    默认运行的服务器程序 (这种没有界面的中间服务件程序但在进程中可以查看到) C/C++ 服务器编程(VS.Linux.测试/维护)C/C++网络编程

  4. bzoj1242(弦图判定)

    cdqppt地址:https://wenku.baidu.com/view/a2bf4ad9ad51f01dc281f1df.html: 代码实现参考的http://blog.csdn.net/u01 ...

  5. 软工网络15团队作业4——Alpha阶段敏捷冲刺(一)

    第 1 篇 Scrum 冲刺: 各个成员在 Alpha 阶段认领的任务 成员      任务 预期任务量/小时 曾艺佳 学习模块:单词及其释义      单词发音     例句学习     添加笔记 ...

  6. unigui导出EXCEL使用NATIVEEXCEL

    unigui导出EXCEL使用NATIVEEXCEL // 需要nativeexcel控件// cxg 2017-9-9 unit myExcel; interface uses System.Sys ...

  7. UvaOJ 10167

    暴力搜索 #include<cstdio> struct node { int x; int y; }s[]; int main() { //freopen("input.txt ...

  8. Asp.Net Mvc异步上传文件的方式

    今天试了下mvc自带的ajax,发现上传文件时后端action接收不到文件, Request.Files和HttpPostedFileBase都接收不到.....后来搜索了下才知道mvc自带的Ajax ...

  9. C# 使用Google Protocol Buffers

    Google Protocol Buffers 使用3.0版本 下载protoc.exe 下载链接 https://github.com/protocolbuffers/protobuf/releas ...

  10. centos下配置nginx遇到的一些基本的坑

    作为一个用.net的渣渣,常年混迹在window平台下,对Linux啥都不懂.随着.net core开源.跨平台后,也开始学习下linux. 在Desktop/Webs下放了一个index.html的 ...