2010-11-10 4 views
12

J'ai une table tblEvent et une autre table tblContact. Il y a un champ ContactID dans tblEvent qui est lié par une clé étrangère à ContactID dans tblContact. J'ai vérifié trois fois; la clé étrangère est dans la base de données. Le modèle Entity Framework NE génère PAS de propriété de navigation ni d'association de clé étrangère pour les autres clés étrangères.EF ne génère pas d'association de clé étrangère à partir d'une clé étrangère dans la table

Ce qui pourrait être différent à propos de cette clé étrangère que EF ne génère pas une propriété de navigation pour elle?

Merci!

+0

Est-ce que ContactID est créé à partir d'une clé unique ou d'une clé primaire? Pourrions-nous voir le SQL –

+0

que SQL n'a pas tblEvent, seulement un FK à tblLanguage. De quel FK avez-vous le problème? tblEvent ou tblLanguage. Nous avons besoin de voir le SQL pour le tblContact AND tblEvent. – RPM1984

Répondre

0

si vous utilisez 3.5sp1 qui pourrait être le problème.

Cet article aborde certains des changements et si rien d'autre vous pouvez toujours ajouter manuellement l'association fk dans le concepteur d'entité comme décrit dans l'article.

http://blogs.msdn.com/b/efdesign/archive/2009/03/16/foreign-keys-in-the-entity-framework.aspx

+0

Ceci est .NET 4.0. Ce qui est fou est qu'il reconnaît les AUTRES clés étrangères - mais pas celui-ci et deux autres. Les autres clés étrangères reconnues. – rsteckly

11

Je trouve ici la solution:

Why doesn't EF 4 generate association for FK relation to column with unique index?

La raison pour laquelle il ne reconnaissait pas qu'il est était parce que la table avait un index non cluster unique sur le champ de clé étrangère.

Apparemment, un index unique, non clusterisé, autorise une valeur nulle qui ne peut pas être mappée.

+3

Quelle est la solution alors? J'utilise un ID comme clé primaire et un GUID pour faire référence à une autre table. Je ne voudrais pas utiliser le GUID comme clé primaire. Je sais que je peux juste utiliser un autre attribut comme index clusterisé, mais cela semble faux. – NSAddict

Questions connexes