我刚刚对源代码管理下的数据库进行了一些只更改(只是列名),并注意到Red Gate SQL Source Control没有提取它们(没有更改提交)。
该工具是否可以原生地识别案例中的更改?它是否依赖于DB的整理?这些名称会持久存储到ORM中,因此在编译时这种情况变得非常重要。
更新
为了给出一个用例场景,我在SQL Source Control下运行了一个在SQL_Latin1_General_CP1_CI_AS排序规则下运行的数据库,它不区分大小写,这对数据库来说很好。然后我有一个使用数据库中持久存在的LINQ to SQL类的Web应用程序。
然后我决定将“ID”改为“Id”以保持FxCop的快乐。我在数据库中更改了它,重新生成了类并更改了Web应用程序中的任何引用。因为我无法在源代码管理下获得此更改,如果其他人从VCS中提取数据库并重新生成LINQ to SQL类,则每次对“Id”的引用都将在.NET端中断。
答案 0 :(得分:1)
如果已使用不区分大小写的排序规则设置数据库,则此行为可能是由SQL Server本身引起的。
要查看是否是这种情况,请参阅此StackOverflow文章: SQL Server check case-sensitivity?
如果是这种情况,则需要将数据库更改为区分大小写的排序规则。
答案 1 :(得分:1)
在花了更多时间深入研究这个问题之后,让Red Gate的Chris不确定解决方案并且没有从这篇文章或equivalent one in the Red Gate forums获得任何其他反馈,我称之为一个bug。我很想被证明是错的,但事实似乎就是这样(抱怨双关语!)。
因此,要专门回答我的问题,不,似乎SQL Source Control无法本机版本仅用于案例的更改。但是,有一种解决方法,包括在工作目录中进行更改并通过TortoiseSVN提交回来(假设VCS是SVN)。完整的详细信息现在位于Defeating Red Gate’s SQL Source Control insensitivity。