Ich habe ein Projekt, das auf .NET 4.0 ausgerichtet war und EF 5.0 verwendet. Nachdem das Zielframework auf 4.5 geändert wurde (und die EF 5.0-Referenz aktualisiert wurde, um die .NET 4.5-Assembly zu verwenden), scheint es, als ob die Datenanmerkungen nicht mehr funktionieren. Zum Beispiel:EF-Datenanmerkungen funktionieren nicht nach Targeting .NET 4.5
[Table("ApplicationSession", Schema = "Application")]
public class ApplicationSessionEntity
{
[Key, ForeignKey("GenericSession")]
public int GenericSessionID { get; set; }
...
verwendet funktionieren, aber jetzt zur Laufzeit wirft die DbContext
ein InvalidOperationException
: Unable to determine the principal end of an association...
.
Ich kann die Fluent API-Aufrufe hinzufügen, um dies zu lösen (und es tut), aber dann erkennt es nicht, dass die Tabelle nicht in der "Dbo" Schema ist. Auch hier weiß ich, dass die Fluent API dazu verwendet werden kann, dies zu beheben, aber warum werden die Datenanmerkungen plötzlich ignoriert?
Danke!
Haben Sie einen Verweis auf System.ComponentModel.Annotations? Die Anmerkungen wurden in .NET Framework 4.5 in diese Assembly verschoben. Was ich denke, ist, dass Sie irgendwie mit Annotationen alte Annotationen kompilieren und die EF5 Runtime nach neuen sucht. Sie können F12 auf der Tabelle drücken und sehen, wo es hingeht, um dies zu überprüfen. – Pawel
@Pawel Ich habe einen Verweis auf System.ComponentModel.DataAnnotations. Ich glaube, dass es erforderlich war, als wir auf EF 5.0 aktualisiert haben. Ich habe versucht, die .NET 4.0 und .NET 4.5 Versionen dieser Assembly zu verwenden, und beide zeigen das gleiche Verhalten. – Rob
Haben Sie irgendwo einen Verweis auf EntityFramework.dll, dessen Version 4.4.0.0 ist? – Pawel