2016-06-10 67 views
1

我已经创建了必须使用FULL OUTER JOIN的视图。如何在VIEW中使用OUTER JOIN创建PRIMARY KEY

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

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

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

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

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

+0

我需要索引视图,因为实体框架需要它。索引我的意思是索引作为公钥。 –