Visual Studio数据库项目无法创建同义词的视图

时间:2011-08-12 08:30:58

标签: visual-studio-2010 deployment database-project

我遇到的情况是我在使用Visual Studio 2010数据库项目构建的新数据库中,该项目定义了许多同义词,指向我们的遗产数据库。

我们的计划是创建对这些同义词的观点;被引用的表是可怕的,因此视图会将数据转换为更好的格式;之后我们将使用Entity Framework为这些视图提供ORM(我们可以在迁移数据时将视图交换为真实表格。)

问题:我可以编写数据库项目中的同义词而没有任何问题。但是,当我尝试创建一个引用这些同义词的视图时,我遇到了类似于:

的错误
Error  1  SQL03006: View: [dbo].[Person] has an unresolved reference to object [dbo].[ma_contact].

...其中[dbo].[Person]是新视图,[dbo].[ma_contact]是旧表的同义词。

解决方法:将所有视图创建脚本放在Script.PostDeployment.sql中,手动执行if-exists-then-drop-then-create逻辑。

这不太理想,虽然它现在适合居住。任何人都对如何“正确”地提出这些观点有任何想法?

1 个答案:

答案 0 :(得分:1)

您是否尝试过向原始数据库添加数据库引用?您必须将其格式提取到dacpac(用于SSDT SQL项目)或DBSchema文件(用于DB项目)。完成后,将其存储在项目可以找到的某个位置。我们在数据库项目的根目录中使用了“Schemas”文件夹,因此所有项目都可以引用它。在项目中,右键单击“References”文件夹并添加Database Reference。搜索您的DBSchema / Dacpac文件并使用该文件以及数据库的名称。这应该让您的同义词正确解析,以便您可以在视图中引用它。