EFCore.MySql当模型遇到int[]怎么办
我使用的是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+版本。
分类:
C#.Net学习
标签:
EFCore.MySql
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架