簡體   English   中英

在數據導入期間處理兩個非常相似的類的最佳方法

[英]Best way to handle two very similar classes during data import

Background: I'm building a C# data migration tool to move data from an older application (with SQL Server database) to our new application (also using SQL Server database), but I am going through our Web API rather than direct inserts into the新的數據庫來重用業務邏輯等等。 我正在使用實體框架從遺留數據庫中讀取。

問題:由於我不知道的原因,較舊的數據庫系統除了使用具有最新版本記錄的表外,還使用存檔表。 例如,可能有一個“person”表,然后還有一個“a_person”表,其中包含先前記錄的多個存檔副本。 我計划將這些歸檔記錄保存在同一個表中,只是在一個時間點架構中鏈接在一起。 所以它們本質上是相同的列,但是由於 EF6,它們是兩個不同的對象,這意味着當我嘗試將值從“person”和“a_person”移動到將發送到的最新數據 object 時,我將所有代碼加倍API。 如果只是一個例子,沒什么大不了的,但是大約有六張桌子有這種模式。

我試圖想出最好的方法來處理這個問題。 我最初考慮為生成的 EF6 類添加接口,例如語義糖,以允許傳遞給通用方法,但我仍然需要將其轉換回原始類,這樣它不會給我帶來任何好處。

接下來,我想將每個表序列化為 json 字符串,我可以將其反序列化為字典 - 然后有一個通用方法可以將我的值提取出來。 但是,我覺得這可能會不必要地緩慢。

最近,我正在考慮更多地回到我最初的想法與接口,但部分類到 EF6 實現一個公共接口和一個可以返回父 EF6 class 的不同值的實現。 因此,“父”和“a_parent”實體都將具有部分類,這些類實現一個接口並返回父級的所有值。 不過,這感覺就像是復制我的訪問值的代碼的一種更好的方式。

序列化和反序列化感覺是真正消除重復代碼的唯一方法。 雖然遷移所花費的時間不是一個關鍵因素,但我寧願不創建可能最緩慢的解決方案。 我想還有反射。 反射會比序列化和反序列化更受歡迎嗎?

我確定並非常滿意的解決方案是基於 AlwaysLearning 的評論 - 我統一了兩條記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM