【问题标题】:Visual Studio database project can't create a view over a synonymVisual Studio 数据库项目无法通过同义词创建视图
【发布时间】:2011-08-12 08:30:58
【问题描述】:

我在使用 Visual Studio 2010 数据库项目构建的新数据库中工作,该数据库定义了许多 同义词,它们指向我们的旧版 strong> 数据库。

我们的计划是针对这些同义词创建视图;被引用的表很糟糕,所以视图会将数据破坏成更好的格式;之后,我们将使用 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 逻辑。

这不太理想,虽然它现在适合居住。有人对如何“正确”执行这些视图有任何想法吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-11-30
      • 2012-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      相关资源
      最近更新 更多