2012-02-10 60 views
1

下面的事件順序似乎突然出現了我:有沒有一種簡單的方法來從EF容器序列化/反序列化實體集合?

  1. 我創建了一個模型。
  2. 我將數據加載到模型中。
  3. 我改變了模型,在往返中丟失了數據。
  4. 我重新加載數據到模型中,寫了很多樣板代碼。

選項我能想到的:

  • (A)有SSMS生成腳本之前我改變模型。
  • (B)使用 TSQL for xml功能將我的數據轉換爲XML(我必須瞭解 如何做到這一點,但看起來有可能)。
  • (C)改變EF代碼生成 放置XML序列化屬性
  • (d)有一個 專家告訴我爲什麼我的做法是錯誤的,讓我直所以這個 問題是無效

回答

0

一旦你序列化並共享/存儲了這些數據,你基本上就有了一份合同。因此,如果您預見了版本控制模型的任何問題,我將創建一個單獨的 DTO模型用於序列化目的。然後,即使您的數據庫模型更改,您也可以將數據重新加載到DTO中。您顯然需要將數據庫模型映射到數據庫模型或從數據庫模型中映射出來,但通常非常簡單。

總之,我認爲這個問題是雙重使用模式:

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

當以下工作得更好:

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

現在,您可以處理單獨版本的DB型,由調整你在鏈接中的代碼*

你可以處理存儲在這個變化場景,甚至支持多個DTO模型(用於不同目的或不同/不兼容的修訂版)。

每當序列化變得棘手時,最簡單的解決方法通常是:引入一個DTO

相關問題