C# 动态数据库表

C# 动态数据库表,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我有一个想法,我想动态添加表到我的数据库(通过一个网站)。我可能无法使用实体框架,但我不确定最好的工具是什么 这样一来,用户就可以创建新的“实体”,从而在数据库中创建新的表。用户只能创建3种类型的实体(但每种类型都有多个),因此理论上我可以有3个带有实体过滤器的表,但由于每个实体将有数百万条记录,并且实体永远不会一起使用,所以我不想将它们存储在同一个表中 因此,我最初的想法是为每个实体创建一个表,与数据库通信的最佳方式是什么?自定义数据访问层 我也愿意接受其他建议…您可以将Dapper与动态对象

我有一个想法,我想动态添加表到我的数据库(通过一个网站)。我可能无法使用实体框架,但我不确定最好的工具是什么

这样一来,用户就可以创建新的“实体”,从而在数据库中创建新的表。用户只能创建3种类型的实体(但每种类型都有多个),因此理论上我可以有3个带有实体过滤器的表,但由于每个实体将有数百万条记录,并且实体永远不会一起使用,所以我不想将它们存储在同一个表中

因此,我最初的想法是为每个实体创建一个表,与数据库通信的最佳方式是什么?自定义数据访问层


我也愿意接受其他建议…

您可以将Dapper与动态对象结合使用,它速度非常快,完全符合您的需要


我最终使用了实体框架

首先,我为每种类型创建了一个模板。比如说TypeA,TypeB,并将其添加到我的模型中。然后,我使用模型生成器在映射之间切换

SqlConnection conn = new SqlConnection( ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString);

DbModelBuilder builder = new DbModelBuilder(DbModelBuilderVersion.V6_0);
builder.Configurations.Add(new EntityTypeConfiguration<TypeA>());

builder.Entity<Tweet>().ToTable("Table1");

using (MyEntities myEntities= new MyEntities (builder.Build(conn).Compile()))
{
    var a = myEntities.Tweets.ToList();//Return table 1
}

DbModelBuilder builder2 = new DbModelBuilder(DbModelBuilderVersion.V6_0);
builder2.Configurations.Add(new EntityTypeConfiguration<TypeA>());
builder2.Entity<TypeA>().ToTable("Table2");

using (MyEntities myEntities= new MyEntities (builder.Build(conn).Compile()))
{
    var a = myEntities.Tweets.ToList();//Return table 2
}
SqlConnection-conn=newsqlconnection(ConfigurationManager.ConnectionStrings[“MyConnectionString”].ConnectionString);
dbmodelbuilderbuilder=newdbmodelbuilder(DbModelBuilder.V6\u 0);
Add(newentitytypeconfiguration());
builder.Entity().ToTable(“表1”);
使用(MyEntities MyEntities=new MyEntities(builder.Build(conn.Compile()))
{
var a=myenties.Tweets.ToList();//返回表1
}
dbmodelbuilderbuilder2=新的DbModelBuilder(DbModelBuilder.V6\u 0);
builder2.Configurations.Add(newentitytypeconfiguration());
builder2.Entity().ToTable(“表2”);
使用(MyEntities MyEntities=new MyEntities(builder.Build(conn.Compile()))
{
var a=myenties.Tweets.ToList();//返回表2
}