2

我正在开发一个应用程序,该应用程序需要最终用户进行“一些”定制,从而影响数据库设计(超出参数化)。

现在,该应用程序支持在运行时使用现有表甚至新表的新列。但最终用户无法更改表格,所有设计工作都必须使用 Microsoft SQL Server Magament Studio 完成。

我的问题是:是否有任何类型的控件(或工具)可以实现此功能?我想将它嵌入到我的应用程序中,但如果它是一个外部工具就不会那么糟糕了。

我想要的是一些工具,让用户定义列(名称、类型、大小)的存储库,例如:

  • 客户代码,BIGINT,不适用
  • 客户姓名,Varchar,50

然后通过添加这些预定义的列来创建或更改表或视图。下面应该执行所需的 SQL 脚本,或者可能使用 SMO(SQL 管理对象)。

更新

目前它的应用程序与 WinForms 一起工作,但任何 WPF / ASP 解决方案将不胜感激。

提到和最终用户,我是指应用程序管理员,但不具备编程技能。

目的

目的是能够从自己的应用程序中扩展和自定义功能,而无需使用 SQL Server Managment Studio。

想象一下,您有一个 ERP,作为用户,您想在您的客户表中告知该应用程序原本不打算使用的内容,甚至没有可用字段,例如:GPS 位置、徽标、CEO 的照片......

当然我可以建议一些高级用户安装 SSMS Express,但这会给他们太多的自由。我也认为它是一种 IT 工具。我想要的是开发从应用程序自己的框架修改应用程序的能力。

如果可以从自己的应用程序中完成,则可以执行一些控制:

  • 检查名为 X 的表字段是否总是使用相同的类型定义,
  • 禁用修改不可自定义字段(应用程序字段)的功能,
  • ...
4

3 回答 3

1

亚历克斯,我认为您应该尝试让用户灵活地向数据库添加新信息,而无需真正改变数据库的设计。

您可以查看 EAV 模型(实体属性值)。这使您可以灵活地向客户添加任何新属性,而无需更改客户表的设计(例如)。

一个很好的例子是 Magento,他们在 EAV(实体属性值)方面做得很好,但你必须知道这种设计模型会对你的性能产生一点影响(或者很大程度上取决于你如何实现它)。

于 2012-08-08T16:36:04.583 回答
0

貌似这种控件是不存在的,所以我从0开始刮。

@BrunoCosta 使用 EAV 模型来扩展标准应用程序的想法是一种很好的做法。但是我假装有一个工具来修改标准,并且有一个用于最终用户和开发人员的工具。嵌入在应用程序中的伪 SQL Server Studio + Visual Studio。

开发完成后,我会将其发布到 CodeProject 中。

于 2012-09-12T08:37:01.770 回答
-1

我认为您正在寻找的控件可能有点太独特了。但是,我认为使用其他控件/库自己创建它不会太困难。

我刚刚完成了一个类似的 WPF 项目。我发现DataGrid类可以很好地表示一个表。您可以以编程方式添加/删除列。尽管您将自己生成 SQL 脚本。

于 2012-08-06T16:11:46.347 回答