我们有两个软件项目,它们都与一个数据库进行通信。现在SQL更新都是在数据库上完成的,它依赖开发人员确保独立更新两组项目以使用最新的数据库模型。使这些事情变得更糟,两个项目都在不同的源控制存储库中的单独解决方案中。
虽然我承认这是一个可怕的情况,但我继承了这种情况,而我的长期目标是在两个应用程序集合中共享的一个共同项目中合并和共享它们之间的(大量)重复逻辑,原因有多种由于关键的截止日期即将到来以及需要将它们迭代地组合并与其他开发人员安排在一起以免过多地破坏工作,因此现在直接进入该模式是不可行的。
记住这一点,我真的想使用SSDT至少开始将数据库结构置于源代码控制之下并使其更易于管理,因为我将要做的事情有很多数据库更改。
在这种情况下,SSDT的问题是您只能从数据库导入一次。之后,该选项显示为灰色且不可用,这显然是SSDT的设计决定,因为它已在MSDN文档中明确列出。
是否有任何简单的方法来更新我的SSDT项目而无需修改当前项目并在每次有人对数据库结构进行更改时重新创建它?
首先是你的权利,这是一个可怕的情况,所以长期改善它的工作!
您可以做两件事,首先您可以使用SSMS“生成脚本”导出所有对象,然后使用SSDT中的导入从脚本导入 - 这不是灰色的。
您可以做的第二件事是使用SSDT中的模式比较手动进行更改,您可以将数据库设置为源和项目作为目标,并选择删除,更新和导入的内容。
和
我将使用比较解决方案: 选择模式比较并将数据库作为源和数据库项目作为目标,然后进行比较和更新
创建一个新的临时数据库项目(在TFS之外)并导入所有对象。签出数据库项目(在TFS内)并将所有文件夹(不包括BIN,OBJ文件夹)从新的临时数据库项目复制并粘贴到数据库项目(在TFS中)并签入。这样就可以将最新的数据库对象复制到TFS没有重复。如果您希望复制/粘贴操作中有新文件,则新文件应包含在DB项目中。删除临时数据库项目文件夹。只要您想将所有数据库对象更新为TFS,就需要执行该过程。
这是一个解决方法,对我来说这个文件重复问题。