2011-05-22 49 views
0

這裏是場景:在.net codefirst中我可以動態創建類嗎?

我正在寫一個數據加載器,它接受來自某些DB2目錄表的二進制數據。我爲DB2表結構創建了POCO,並在將數據加載到其中之前使用Code First創建SQLServer DB。我首先使用代碼併爲每個數據集創建新數據庫的原因之一是,我正在處理不同版本的DB2,它們添加了列,這些列在版本之間移動位置甚至刪除列。

在開發過程中,我根據我的數據來自哪個版本的DB2,評論和取消註釋不同版本的POCO。但是現在我想要有一個通用版本。一個顯而易見的解決方案是根據DB2版本對這些POCO進行一系列的修復,以及一組DBContext類。這將需要使用DBContext的代碼的全新級別的複雜性。

那麼有沒有一種方法可以根據DB2版本動態生成POCO,然後讓CodeFirst從中獲取?

+0

如果可以,你會如何消耗這些物體?顯然,如果它們在編譯時不存在,則無法對它們進行編碼。你準備使用反射,只是對他們進行數據綁定(反射)? – 2011-05-22 18:16:10

+0

我想要做的是讓他們在適當的結構中創建數據庫,並且還用於根據POCO結構動態構建數據集的數據加載器。 – GilShalit 2011-05-23 18:30:17

回答

0

如果我理解正確,您試圖從不同的模式獲取來自不同DB2數據庫的數據,但希望將其加載到單個SQL Server模式中?

你可以考慮使用映射文件。下面的示例假定您有兩個源DB2模式(「Schema1」和「Schema2」)和一個目標SQL模式。有一個類型(「Entity1」),但是兩個POCO分別代表兩個DB2模式(「Entity1FromSchema1」和「Entity1FromSchema2」)。

public class Entity1FromSchema1Mapping : EntityTypeConfiguration<Entity1FromSchema1> 
{ 
    public Entity1FromSchema1Mapping() 
    { 
     this.ToTable("Entity1"); 
     this.HasKey(...); 
     this.Property(...); 
     ...    
    } 
} 

public class Entity1FromSchema2Mapping : EntityTypeConfiguration<Entity1FromSchema2> 
{ 
    public Entity1FromSchema2Mapping() 
    { 
     this.ToTable("Entity1"); 
     this.HasKey(...); 
     this.Property(...); 
     ...    
    } 
} 

注意兩個不同實體的映射文件都映射到同一個SQL Server表。

相關問題