Не уверен, но, боюсь, ты не сможешь этого сделать.Но вы можете смоделировать это:
Классы для 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;}
}
Я использовал аналогичный подход в своем проекте, и он работает довольно хорошо.Добавление новых типов столбцов легко с помощью миграции.Единственной проблемой может быть производительность - это мой вопрос по этому поводу, но EF Core должен быть быстрее.