VB.NET GUI - TSQL动态SQL噩梦设计

时间:2012-09-24 13:39:47

标签: vb.net tsql dynamic-sql

这更像是一个设计而不是实现问题。我们的数据库有一个VB.NET前端。当前的设计是使用元数据表上的表来强制执行“前端无SQL”策略。我认为我们所做的事情比硬编码更糟糕,因为我们现在有一些很好的STORED PROC意大利面条代码。我们有很多动态SQL用于构建表的完全限定名称,然后将其发送回另一个处理平面文本文件实际加载的STORED PROC。

    ID DATA_TABLE_NAME DATA_TABLE_SCHEMA PTR_TABLE_NAME PTR_TABLE_SCHEMA
    1  datatable            DBO            datatable_ptr       DBO

因此,我们有一个类,它将获取数据表名称和表指针,并将其混合到VB.NET前端的类中,该类发送一个全名,如database.dbo.datatable,映射到database.dbo。 datable_ptr并使用全局临时表来加载平面文本文件。好吧有人在这个令人讨厌的元数据表中添加了一行,它让VB.NET FRONT END!必须有一个更好的方法来做到这一点,但我没有足够的经验来提出更好的通用解决方案。

程序员如何使用T-SQL和VB.NET强调代码重用和通用编程,同时保持代码的可读性和可维护性?有没有人对有设计模式的书籍或烹饪书籍提出一些建议,可以指出一些更可行的解决方案?

1 个答案:

答案 0 :(得分:1)

在我开始提出解决方案之前,我认为我需要首先披露一些事情:

1)我有超过2年的专业编程经验 2)我是短视的,因为我只对每天使用的数据库有经验 3)我只与ONE(和当前)vb.Net/ TSQL公司合作。

那就是说,以下是我要做的事情:

1)您的经理很可能希望看到某种可量化的进展 2)您正在寻找一种实用的方法,以便如何处理这个问题(这个提出的解决方案提供的内容),这有利于所述可量化的进展。
3)你需要保持“前端没有SQL”的理念 4)你需要一些可扩展的东西,所以当35个以上的应用程序成为75个以上的应用程序时,你仍然可以。

解决方案:
1.创建一个新数据库,就像前端允许SQL一样(即'你想要的') 2.创建一个Web服务,它将充当前端(不能拥有SQL)和“您一直想要的”数据库之间的中间人。这将解决问题。数据库结构不需要进行模糊处理,因为它将从最终用户中删除两次。

方法:
1)最初,动态SQL可以“按原样”移动到Web服务。它可以留在那里,因为意大利面条的一部分被翻译。我们可以称之为“主要功能”,或“旧的做事方式” 2)为每个应用程序指定一个团队负责人(或每5个应用程序指定一个领导者等)。他们的责任在于创建他们的Web服务部分。您需要知道他们需要哪些表,并且他们需要知道创建Web服务时所需的格式 3)一次接受一个应用程序:
A)设置他们需要的数据库表 B)创建Web服务以将这些表与前端接口连接 C)从前端创建函数调用以访问Web服务。首先尝试与新数据库表接口的新函数,然后尝试使用Master函数与数据库接口,就像现在一样。

当应用程序切换到使用他们的“个性化”Web服务功能时,Master功能应该越来越少(即你 慢慢停止使用意大利面条存储程序)。此外,作为Web服务的创建(在此结束时可能会有尽可能多的贡献者 分散,工作可以很快地进行,并且由于主功能将是第一个启动和运行的东西, 作为一个整体的运作仍然可以照常开展业务。