有没有一种简单的方法来序列化/反序列化EF容器中的实体集合?

时间:2012-02-10 17:06:53

标签: c# entity-framework serialization xml-serialization

以下一系列事件似乎突然出现在我面前:

  1. 我创建了一个模型。
  2. 我将数据加载到模型中。
  3. 我改变了模型,丢失了往返的数据。
  4. 我将数据重新加载到模型中,编写了大量的样板代码。
  5. 我能想到的选项:

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

1 个答案:

答案 0 :(得分:0)

一旦序列化并共享/存储了这些数据,您基本上就会签订合同。因此,如果您预见到对模型进行版本控制的任何问题,我会为序列化目的创建一个单独的 DTO模型。然后,即使数据库模型发生更改,您也可以将数据重新加载到DTO中。显然,您需要将DB模型映射到DB模型/从DB模型映射,但这通常非常简单。

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

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

如果以下效果更好:

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

现在,您可以通过调整标记为*

的链接中的代码来单独处理数据库模型的版本控制

您可以 处理此方案中的存储更改,甚至支持多个DTO模型(用于不同目的,或不同/不兼容的修订)。

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