如何在VIEW中创建使用OUTER JOIN的PRIMARY KEY

时间:2016-06-10 15:17:41

标签: sql-server entity-framework ef-database-first sql-view

我创建的视图必须使用FULL OUTER JOIN

我想在EDMX中使用DbFirst方法使用此视图。

EDMX正在产生下一个警告:

<!--Errors Found During Generation: warning 6013: The table/view 'MyView' does not have a primary key defined and no valid primary key could be inferred. This table/view has been excluded. To use the entity, you will need to review your schema, add the correct keys, and uncomment it.

我试图通过添加来解决这个问题 CREATE UNIQUE CLUSTERED INDEX PK_MyView ON [dbo].[MyView] (Id) 但是Sql说: Cannot create index on view "dbo.MyView" because it uses a LEFT, RIGHT, or FULL OUTER join, and no OUTER joins are allowed in indexed views. Consider using an INNER join instead.

有没有办法将没有PK的视图添加到edmx或将PK添加到视图中。

1 个答案:

答案 0 :(得分:1)

您正在创建索引视图,并且您可以在索引视图中对连接类型进行限制。主要是,您只能执行内部联接。不允许所有其他类型的连接。

此限制有一个解决方法,您可以阅读here,了解它是否适​​合您的情况。但这并不是一个特别有吸引力的解决方法。

除非您打算使用索引视图来聚合数据,否则您通常不需要索引视图,这是索引视图主要用于的数据。否则,在基表上使用适当的索引应该不需要索引视图。