根据用户输入创建数据库和实体模型

时间:2012-11-28 15:02:38

标签: c# entity-framework dynamic

目前我正在调整一个与Entity Framework配合使用的系统,以连接到SQL Server 2008 R2数据库。

对于新部件,关键用户需要添加,更改和删除普通用户可以使用的实体。在我创建一个保存具有名称和属性的对象的系统之前,我想查看是否可以使用关键用户提供的实体动态创建数据库(通过简化的实体设计器)。

我在网上搜索了一下,但没有找到像这样的东西。也许这里有人知道一些事情可以让我朝着正确的方向前进?

1 个答案:

答案 0 :(得分:1)

通过动态定义表,列,索引和外键,听起来最好。如果您使用具有实体和属性的“数据库数据库”模式,则无法有效地索引数据库。查询变得非常缓慢和讨厌。

您可以使用SQL Server管理对象(SMO)查询和更改数据库架构。我多次使用过它们。他们的工作和工作非常好。

我不相信实体框架在这里带来了很多东西。 EF适用于在静态模式上表达查询和DML。如果您使用动态架构,则会失去大部分好处。当然,仍然存在一些好处,例如实体密钥管理以及能够使用Entity SQL而不是T-SQL。在缺点方面,您必须在运行时创建所有EF元数据(可能生成EDMX文件或动态程序集)。

我认为这不值得。我强烈考虑在运行时构建数据库模式,并使用动态构建的T-SQL对其执行查询。这样做比使用EF对抗系统要容易得多。

从这个意义上说,你回到了DataTablesGridViews,即使在5年前,它也被认为是好风格。这可能不算太差。