使用Entity Framework在ASP.Net Core 2中创建动态数据库表

时间:2018-06-06 06:17:44

标签: c# asp.net-core-mvc

我在动态表上遇到问题,或者用户将在Web应用程序中创建表并在之后插入记录。如何在运行时创建模型而不知道用户输入的列数。 EF可以支持这个问题吗?

实施例

我有1个tablename用于tablename,然后textbox2用于数字列 输入列数后,它将动态创建列名的文本框,然后用户将保存它。

1 个答案:

答案 0 :(得分:0)

不确定,但我担心你不能这样做。但你可以模拟它:

CodeFirst的类:

public class Table
{
    public int Id{get;set;}
    public string Name {get;set;}
    public ICollection<Column> Columns {get;set;}
    public ICollection<Row> Rows {get;set;}
}

public class Row
{
    public int Id{get;set;}
    public ICollection<ColumnValueBase> Values {get;set;}
}

public abstract class Column
{
    public int Id {get;set;}
    public Column Column {get;set;}
}

public abstract class ColumnValue
{
    public int Id {get;set;}
}

public class IntColumn : Column
{
    public IntColumnValue IntValue {get;set;}
}

// other types of columns and values

public class TablesContext : DbContext
{
    public DbSet<Table> Tables {get;set;}
}

我在项目中使用了类似的方法,但效果很好。通过迁移可以轻松添加新类型的列。唯一的问题可能是性能 - this是我的问题,但EF Core应该更快。