2016-06-10 2 views
1

J'ai créé vue qui doit utiliser FULL OUTER JOIN.Comment créer PRIMARY KEY dans VIEW qui utilise OUTER JOIN

Je souhaite utiliser cette vue dans EDMX avec l'approche DbFirst.

Mais le EDMX est la génération d'avertissement suivant:

<!--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.

J'ai essayé de résoudre ce problème en ajoutant CREATE UNIQUE CLUSTERED INDEX PK_MyView ON [dbo].[MyView] (Id) Mais dit 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.

Y at-il un moyen d'ajouter vue sans PK vers edmx ou ajoutez PK à la vue.

Répondre

1

Vous créez une vue indexée et il existe des restrictions sur le type de jointures que vous pouvez faire dans une vue indexée. Principalement, vous ne pouvez effectuer qu'une jointure interne. Tous les autres types de jointures ne sont pas autorisés.

Il existe une solution à cette limitation, que vous pouvez consulter à propos de here pour voir si elle est appropriée à votre situation. Ce n'est cependant pas une solution de travail particulièrement intéressante.

Vous n'avez généralement pas besoin d'indexer les vues, à moins que vous n'ayez l'intention d'utiliser la vue indexée pour agréger des données, ce pour quoi les vues indexées sont principalement utiles. Sinon, avoir les index appropriés sur les tables de base devrait éliminer le besoin d'une vue indexée.

+0

Je dois indexer la vue car Entity Framework en a besoin. Par indice, je veux dire l'index comme clé prinaire. –