动态表名称与实体框架

Obi*_*bin 13 c# sql-server asp.net-mvc entity-framework

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

db.Table("TableName")<SpecificModel>.Where(x => x.ID == ID)
Run Code Online (Sandbox Code Playgroud)

Pal*_*mar 6

你想这样做吗?

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

  • 这将允许 sql 注入。 (2认同)

Bry*_*yan 5

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

我有相同的表,但它们的名称不同。例如,一个客户表,但不同公司的前缀不同。

[ACME$Customer] 
[SuperCorp$Customer]
Run Code Online (Sandbox Code Playgroud)

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