是否有一种简单的方法可以序列化/反序列化EF容器中的实体集合
本文关键字:反序列化 序列化 EF 集合 实体 方法 简单 一种 是否 | 更新日期: 2023-09-27 18:23:58
我突然想到了以下事件序列:
- 我创建了一个模型
- 我将数据加载到模型中
- 我改变了模型,在往返中丢失了数据
- 我将数据重新加载到模型中,为此编写了大量样板代码
我能想到的选项:
- (A) 在我更改模型之前让SSMS生成脚本
- (B) 使用TSQLforxml功能将我的数据转换为xml(我必须学习如何这样做,但似乎是可能的)
- (C) 更改EF代码生成放置XML序列化属性
- (D) 有一个专家告诉我为什么我的方法是错误的,并纠正我的错误问题无效
一旦您序列化并共享/存储了数据,您就基本上拥有了一个契约。因此,如果您预见到对模型进行版本控制的任何问题,我将创建一个单独的DTO模型用于序列化目的。然后,即使数据库模型发生了更改,也可以将数据重新加载到DTO中。显然,您需要将数据库模型映射到数据库模型/从数据库模型映射出来,但这通常是非常琐碎的。
简而言之,我认为问题在于模型的双重用途:
DB <===> Model <==> storage
当以下工作效果更好时:
DB <===> DB Model <==*==> DTO Model <===> storage
现在,您可以通过调整标记为*
的链接中的代码来单独处理DB模型的版本控制
在这种情况下,您还可以处理存储更改,甚至可以支持多个DTO模型(用于不同目的或不同/不兼容的修订版)。
每当序列化变得棘手时,最简单的修复方法通常是:引入DTO