EF和动态表名

时间:2017-08-23 20:30:37

标签: entity-framework dynamic mapping

我正在检查是否有办法动态更改映射到EF 6中的实体的表。表的架构不会更改,只是名称。例如,我有一个名为Orders的实体,然后我需要将此实体分配给程序运行时动态创建的SQL视图。视图的名称是在运行时生成的,因此我需要在运行时将该视图名称映射到Orders实体。知道怎么做吗? 提前致谢。 -Fernando

1 个答案:

答案 0 :(得分:2)

只要在程序运行时表名没有改变,你就可以在OnModelCreating中映射。例如

   class Db: DbContext
    {

        public DbSet<Student> Students { get; set; }
        public DbSet<ClassRoom> Classrooms { get; set; }

        public DbSet<StudentToClassRoom> StudentToClassRoom { get; set; }

        private string GetStudentTableName()
        {
            return "Student123";
        }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Student>().ToTable(GetStudentTableName());
            base.OnModelCreating(modelBuilder);
        }

    }