1

为了在 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 表的文件和每个外键对象的文件。但是,现在模式比较正在一个表脚本中生成所有内容。我发誓我以前用模式比较做过这个,但我似乎找不到配置它的方法来做到这一点。任何人都可以建议吗?

4

1 回答 1

0

你能改变你的 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代码的原因一样)

于 2012-06-07T01:45:39.790 回答