我想知道是否有任何方法可以首先使用实体框架代码创建动态表,即当网站处于活动状态时,该用户输入表名并创建一些字段名。像这样的东西:
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);
}
我找到了:
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