CRUD动态创建表的最佳方法是什么?

时间:2011-09-23 16:08:12

标签: asp.net sql-server

我正在创建一个ASP.NET应用程序(SQL Server后端),它允许用户(一个企业)创建自己的表和字段。它们都是父表的子表(非动态)并具有适当的PK / FK关系(创建表时的默认字段)。

但是,我不喜欢我目前更新/插入和选择字段的方法。我打算创建一个传递了正确的密钥和表名的SP,然后让它返回正确的SQL语句。我认为只传递字段/值的名称/值对并让SP实际处理它们可能更有意义。这是最好的方法吗?如果是这样,我不擅长SP的所有例子如何?

2 个答案:

答案 0 :(得分:0)

我对EAV模型没有很多经验,但听起来好像是实现你想要实现的目标。但是,如果您已经有一个系统,那么大修可能会非常昂贵。

如果您对用户表进行的查询是基本的CRUD操作,那么为每个表创建CRUD存储过程怎么样?例如。 -

表:

acme_orders

存储过程:

acme_orders_insert
acme_orders_update
acme_orders_select
acme_orders_delete
... [other necessary procs]

我不知道这些表的业务需求是什么,但我想无论你目前做什么,都可以转化为使用存储过程执行相同的操作。

答案 1 :(得分:0)

  

我打算创建一个传递了正确的密钥和表名的SP,然后让它>返回正确的SQL语句。我认为只传递>名称/值对的字段/值并让SP实际处理它们会更有意义。

假设你的意思是proc会生成然后执行SQL(有时称为动态SQL),这可以工作,但它可能比静态/编译SQL执行速度慢,就像在正常的proc中一样。