2010-11-10 7 views
12

Ich habe eine Tabelle tblEvent und eine andere Tabelle tblContact. Es gibt ein Feld ContactID in tblEvent, das über einen Fremdschlüssel mit ContactID in tblContact verknüpft ist. Ich habe dreifach überprüft; Der Fremdschlüssel befindet sich in der Datenbank.EF generiert keine Fremdschlüsselzuordnung aus Fremdschlüssel in Tabelle

Das Entity Framework-Modell generiert KEINE Navigationseigenschaft und keine Fremdschlüsselzuordnung wie für die anderen Fremdschlüssel.

Was könnte an diesem Fremdschlüssel anders sein, dass EF keine Navigationseigenschaft dafür generiert?

Danke!

+0

Wird ContactID von einem eindeutigen Schlüssel oder einem Primärschlüssel erstellt? Könnten wir das SQL –

+0

sehen, dass SQL kein tblEvent, nur ein FK zu tblLanguage hat. Mit welchem ​​FK hast du das Problem? tblEvent oder tblLanguage. Wir müssen das SQL für den tblContact AND tblEvent sehen. – RPM1984

Antwort

0

Wenn Sie 3,5sp1 verwenden, könnte das Problem sein.

Dieser Artikel behandelt einige der Änderungen, und wenn nichts anderes möglich ist, können Sie die fk-Zuordnung im Entity Designer manuell hinzufügen, wie im Artikel beschrieben.

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

+0

Das ist .NET 4.0. Was ist verrückt, es erkennt die anderen Fremdschlüssel - nur nicht diese und zwei andere. Die anderen Fremdschlüssel erkennt er. – rsteckly

11

fand ich die Lösung hier:

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

Der Grund ist es nicht, es war zu erkennen ist, weil die Tabelle auf dem Fremdschlüsselfeld einen eindeutigen nicht gruppierten Index hatte.

Anscheinend ermöglicht ein eindeutiger, nicht gruppierter Index einen Nullwert, der nicht zugeordnet werden kann.

+3

Was ist die Lösung dann? Ich verwende eine ID als Primärschlüssel und eine GUID, um auf eine andere Tabelle zu verweisen. Ich möchte nicht die GUID als Primärschlüssel verwenden. Ich weiß, dass ich nur ein anderes Attribut als gruppierten Index verwenden kann, aber es scheint einfach falsch. – NSAddict

Verwandte Themen