【问题标题】:EF and dynamic table namesEF 和动态表名
【发布时间】:2018-02-01 13:53:16
【问题描述】:

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

【问题讨论】:

    标签: entity-framework dynamic mapping


    【解决方案1】:

    只要在您的程序运行时表名不改变,您就可以在 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);
            }
    
        }
    

    【讨论】:

    • 但是模型是在创建视图之前创建的,我将这个添加到问题中,谢谢。
    • 无论如何,我会看看这个,因为我认为我们可以在应用程序启动时设置视图名称。会检查并通知您,谢谢。
    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2018-06-11
    相关资源
    最近更新 更多