这是否有可能从用户那里获得名称并在运行网站的数据库中使用该名称创建一个表?

问题描述 投票:1回答:1

我想知道是否有任何方法可以首先使用实体​​框架代码创建动态表,即当网站处于活动状态时,该用户输入表名并创建一些字段名。像这样的东西:

public async Task<IActionResult> CreateTable(string tableName, string field1, ...)
{
 try
    {
     Guid ID = new Guid();
     _context.Add(new tableName{ID, field1, ...});
     await _context.SaveChangesAsync();
     return RedirectToAction(nameof(Index));
    }
 return View(Index);
}
c# .net entity-framework ef-code-first core
1个回答
0
投票

我找到了:

public async Task<IActionResult> CreateTable(string tableName, string field1, double field2, ...)
{
  string SqlRaw = string.Format("CREATE TABLE [{0}] ([ID] UNIQUEIDENTIFIER NOT NULL, [{1}] NVARCHAR (MAX) NOT NULL, [{2}] FLOAT NOT NULL, ..., , CONSTRAINT[PK_{0}] PRIMARY KEY CLUSTERED([ID] ASC);", tableName, field1, field2);
  await _context.Database.ExecuteSqlRawAsync(SqlRaw);
  await _context.SaveChangesAsync();
 return View(Index);
}

和用于删除表:

public async Task<IActionResult> DropTable(string tableName)
{
  string SqlRaw = string.Format("DROP TABLE IF EXISTS [{0}];", tableName);
  await _context.Database.ExecuteSqlRawAsync(SqlRaw);
  await _context.SaveChangesAsync();
 return View(Index);
}

感谢@iSR5

© www.soinside.com 2019 - 2024. All rights reserved.