是否有一种简单的方法可以序列化/反序列化EF容器中的实体集合

本文关键字:反序列化 序列化 EF 集合 实体 方法 简单 一种 是否 | 更新日期: 2023-09-27 18:23:58

我突然想到了以下事件序列:

  1. 我创建了一个模型
  2. 我将数据加载到模型中
  3. 我改变了模型,在往返中丢失了数据
  4. 我将数据重新加载到模型中,为此编写了大量样板代码

我能想到的选项:

  • (A) 在我更改模型之前让SSMS生成脚本
  • (B) 使用TSQLforxml功能将我的数据转换为xml(我必须学习如何这样做,但似乎是可能的)
  • (C) 更改EF代码生成放置XML序列化属性
  • (D) 有一个专家告诉我为什么我的方法是错误的,并纠正我的错误问题无效

是否有一种简单的方法可以序列化/反序列化EF容器中的实体集合

一旦您序列化并共享/存储了数据,您就基本上拥有了一个契约。因此,如果您预见到对模型进行版本控制的任何问题,我将创建一个单独的DTO模型用于序列化目的。然后,即使数据库模型发生了更改,也可以将数据重新加载到DTO中。显然,您需要将数据库模型映射到数据库模型/从数据库模型映射出来,但这通常是非常琐碎的。

简而言之,我认为问题在于模型的双重用途:

DB <===> Model <==> storage

当以下工作效果更好时:

DB <===> DB Model <==*==> DTO Model <===> storage

现在,您可以通过调整标记为* 的链接中的代码来单独处理DB模型的版本控制

在这种情况下,您还可以处理存储更改,甚至可以支持多个DTO模型(用于不同目的或不同/不兼容的修订版)。

每当序列化变得棘手时,最简单的修复方法通常是:引入DTO