动态数据库表

本文关键字:数据库 动态 | 更新日期: 2023-09-27 17:58:22

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

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

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

我也愿意接受其他建议。。。

动态数据库表

您可以将Dapper与动态对象一起使用,它非常快速,完全符合您的需求。

https://code.google.com/p/dapper-dot-net/

我最终使用了实体框架。

首先,我为每种类型创建了一个模板。比方说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
}