0

我目前在一個具有遺留數據庫的項目中使用EF5。傳統應用程序使用動態構建表(xxxx_year,yyyy_year)來存儲「基於年份的數據」。我一直試圖找到一種方法來動態地映射ef實體(xxxx,yyyy等)到表格中,基於年份屬性值,但我總是最終得到「支持上下文的模型自從數據庫已創建。「錯誤。任何人都可以給我一些關於如何做到這一點的想法?映射實體框架代碼首先動態命名的表

我發現一些舊的博客文章談論edm映射,我們可以根據某些屬性值(水平分區類型)分開映射表,但是我找不到任何關於如何使用代碼先完成相同的指針。

感謝,P

+0

什麼是數據庫平臺? – qujck

+0

我正在使用sql server 2008 r2 – Paulo

回答

0

在每個域對象的映射配置,你可以告訴EF,對於一個實體對應的表名是從實體名稱本身不同。

如果您的類名爲YyyyYear,則可以通過在其映射文件中指定名稱來指向名爲「2012_year」的表。

例如

 
// 1 entity class per db table 
public class YyyyYear 
{ 
    public int Id { get; set; } 
} 

// 1 mapping file for entity 
using System.Data.Entity.ModelConfiguration; 
public class YyyyYearMap: EntityTypeConfiguration 
{ 
    public YyyyYearMap() 
    { 
    this.HasKey(t => t.Id); 
    this.ToTable("2012_year"); 
    } 
} 

// your db context class (derives from DbContext) 
using System.Data.Entity; 
public class MyDbContext: DbContext 
{ 
    // 1 db set for every entity/table 
    public DbSet YyyyYears { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
    // 1 mapping file for every entity/table 
    modelBuilder.Configurations.Add(new YyyyYearMap()); 
    } 
} 

我不知道,如果這就是你要找的東西,但我有一個博客帖子有一步一步的指示,工作示例,以及如何解決常見問題。

http://wakeupandcode.com/entity-framework-code-first-migrations/

希望這有助於!

+0

嗨,對於遲到的回答感到抱歉。我已經設法以另一種方式解決它(將「前幾年」表合併成一個叫做xxxhistory的大表,並將其分割到Sql Server中。唯一的缺點是我總是以當前年份+歷史模型結束。 ,但在我看來,它需要每年創建一個新的映射,這是不可能的:-) – Paulo