动态数据库表

时间:2014-04-14 20:46:41

标签: c# sql-server entity-framework

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

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

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

我也对其他建议持开放态度......

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我最终使用了实体框架。

首先,我为每种类型创建了一个模板。让我们说TypeA,TypeB并将它添加到我的模型中。然后我使用模型构建器在Mappings之间切换

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
}