【问题标题】:How do I configure Schema Compare to produce separate files for foreign keys?如何配置 Schema Compare 为外键生成单独的文件?
【发布时间】:2012-06-06 20:21:02
【问题描述】:

为了在 VS 2010 中使用我们的数据库项目,我们使用 SSMS 直接将架构更改到我们的本地项目数据库中,然后当我们准备签入时,我们会进行架构比较,本地数据库与项目,它可以识别我们的变化。然后,当我们写入更改时,它会在我们的数据库项目中更改或创建模式对象脚本。如果一切正常,我们就可以将这些更改签入到 TFS。

我们对外键和索引的标准是分别保存它们。也就是说,即使我这样定义新表中的列:

CREATE TABLE Billing.EntryPointProduct
(
    EntryPointProductId INT IDENTITY(1,1) PRIMARY KEY,
    EntryPointId INT FOREIGN KEY REFERENCES Billing.EntryPoint(EntryPointId),
    ProductId INT FOREIGN KEY REFERENCES ProductCatalog.Product(ProductID)
)

最后,我们真正想要的是 EntryPointProduct 表的文件和每个外键对象的文件。但是,现在模式比较正在一个表脚本中生成所有内容。我发誓我以前用模式比较做过这个,但我似乎找不到配置它的方法来做到这一点。谁能给点建议?

【问题讨论】:

    标签: sql-server visual-studio-2010 database-schema


    【解决方案1】:

    您能否更改您的 DDL,使其看起来像这样:

    CREATE TABLE Billing.EntryPointProduct
    (
        EntryPointProductId INT IDENTITY(1,1),
        EntryPointId INT,
        ProductId INT,
    CONSTRAINT [PK_EntryPointProduct] PRIMARY KEY CLUSTERED (EntryPointProductId)
    )
    
    ALTER TABLE Billing.EntryPointProduct
    WITH CHECK ADD CONSTRAINT FK_EntryPointProduct_EntryPoint FOREIGN KEY(EntryPointId)  REFERENCES Billing.EntryPoint(EntryPointId)
    
    ALTER TABLE Billing.EntryPointProduct
    WITH CHECK ADD CONSTRAINT FK_EntryPointProduct_ProductCatalog FOREIGN KEY(ProductId)  REFERENCES ProductCatalog.Product(ProductID)
    

    这样您将拥有 3 个不同的文件,并且您的 FK 将具有真实姓名 (FK_*) 而不是系统生成的名称,系统生成的名称将在每次创建时随机生成,因此如果您执行模式比较 2 个单独编写的数据库。 (和我修改PK代码的原因一样)

    【讨论】:

    • 这绝对是我们希望决赛的方式。我一直希望通过以我的方式输入它,然后进行模式比较,它会自行生成这些多行版本。您关于 FK 名称的观点也很有意义。我今天将对此进行实验。
    • 很好的电话 Levi,成功了。像这样单独定义它们很痛苦,但是模式比较正确地将它们设置到自己的文件中,并且我得到了一个非神秘名称的好处。我在表定义中定义的键在比较结果中显示为“在表上:”而不是文件名。
    猜你喜欢
    • 2013-09-17
    • 2023-03-29
    • 2018-03-19
    • 2012-01-09
    • 1970-01-01
    • 2019-10-02
    • 2011-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多