我目前正在使用旧数据库的项目中使用EF5。遗留应用程序使用动态构建表(xxxx_year,yyyy_year)来存储“基于年份的数据”。我一直试图找到一种方法来动态地将ef实体(xxxx,yyyy等)映射到表格,基于年份属性值,但我总是得到“支持上下文的模型已经改变,因为数据库已创建。“错误。谁能给我一些关于如何实现这一目标的想法?
我发现一些旧的博客文章谈论edm映射,我们可以根据某些属性值(水平分区的类型)分离映射表,但我找不到任何关于如何使用代码完成相同的指针。
谢谢,P
答案 0 :(得分:0)
在每个域对象的映射配置中,您可以告诉EF实体的相应表名与实体名本身不同。
如果您的类名为YyyyYear,则可以通过在其映射文件中指定名称来指向名为“2012_year”的表。
e.g。
// 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/
希望这有帮助!