动态表名称与entity framework

我有很多表具有相同的模型结构,但其他表名与其他数据(在这种情况下将是~100表)。 我想使用Entity Framework在运行时动态切换表名(例如从路由获取名称表)。 数据库中的表是由其他脚本动态添加和删除的。 有这样的方法可以做到这样的良好表现吗?

db.Table("TableName").Where(x => x.ID == ID) 

你想这样做吗?

 foreach (string tableName in new[] { "Table1", "Table2" }) { var result = dbContext.Database.SqlQuery(string.Format("SELECT * FROM {0} WHERE ID=@p0", tableName), 1).FirstOrDefault(); } 

我做了这样的事。 http://nodogmablog.bryanhogan.net/2013/08/entity-framework-in-an-dynamics-nav-navision-envirnoment/

我有相同的表,但他们有不同的名字。 例如,客户表但具有不同公司的不同前缀。

 [ACME$Customer] [SuperCorp$Customer] 

我最终使用动态编译。 这是一篇非常详细的博客文章,所以我不会在这里讨论它。

你可以这样做:

  // Gets entity type from specified namespace/assembly Type entityType = Type.GetType(string.Format("Your.NameSpace.{0},{1}", entityName, "Assembly.Name")); // Finds item to update based on its primary key value var entity = _dbContext.Find(entityType, entityKey); // Finds column to update preference for PropertyInfo propertyInfo = entity.GetType().GetProperty(entityField); // Set and update (date example given) propertyInfo.SetValue(entity, isOptIn ? (DateTime?)null : (DateTimeOffset?)DateTime.Now, null); _dbContext.SaveChanges();