Die navigation Eigenschaft ist nicht eine deklarierte Eigenschaft auf, geben Sie bei Code First-migration mit EF6 und MVC 5
Ich versuche, fügen Sie die neue Tabelle in die bestehende Datenbank. Die Datenbank wird automatisch erstellt, indem MVC 5 Projekt. Nach versuchen, viele verschiedene Dinge, die ich nicht gelingt, hinzufügen Tabelle Post in meiner Datenbank.
Wenn ich laufen:
PM> Enable-Migrations -ContextTypeName StudentBookApp.Models.PostContext -Force
Bekomme ich eine Fehlermeldung: Die navigation Eigenschaft 'PostText' ist nicht eine deklarierte Eigenschaft auf den Typ 'Post'. Stellen Sie sicher, dass es nicht explizit ausgeschlossen aus dem Modell und, dass es eine gültige Navigations-Eigenschaft.
Ich verstehe nicht diesen Fehler, bacause PostText es ist keine navigation Eigentum und ich bin nicht sicher, warum, Entity Framework denkt, es ist.
Dies ist die definition von my-Post-Klasse innerhalb der Klasse, ich habe PostContext Klasse auch:
public class Post
{
[Key]
public int PostId { get; set; }
public string PostText { get; set; }
public byte[] ImagePost { get; set; }
public byte[] FilePost { get; set; }
public string TextPost { get; set; }
public string UserId { get; set; }
}
public class PostContext : DbContext
{
static PostContext()
{
Database.SetInitializer(new DropCreateDatabaseIfModelChanges<PostContext>());
}
public DbSet<Post> Posts { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Configurations.Add(new PostConfiguration());
}
}
Habe ich auch erstellt mapping-Klasse PostConfiguration:
public class PostConfiguration : EntityTypeConfiguration<Post>
{
public PostConfiguration() : base()
{
HasKey(p => p.PostId);
ToTable("Post");
HasRequired(p => p.PostText);
ToTable("Post");
HasOptional(p => p.ImagePost);
ToTable("Post");
HasOptional(p => p.FilePost);
ToTable("Post");
HasOptional(p => p.TextPost);
ToTable("Post");
HasRequired(p => p.UserId);
ToTable("Post");
}
}
Und ich bin versucht zu tun, die einfache migration von Datenbank aufrufen:
Enable-Migration
Add-Migration "NewMigration"
Update-Database
Aber auf eine Aktivierung der migration bekomme ich genannten Fehler.
Kann jemand, der weiß, was mache ich falsch?
Edit:
Dies ist connectionString inside Web.config-Datei
<connectionStrings>
<add name="PostContext" connectionString="Data Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-StudentBookApp-20150114035149.mdf;Initial Catalog=aspnet-StudentBookApp-20150114035149;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
InformationsquelleAutor nemo_87 | 2015-01-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin mir ziemlich sicher, dass Ihre Einheit die Konfiguration im Thema.
Die Aufrufe
HasOptional()
undHasRequired()
Sie den Bezug Einschränkungen. Was Sie tun möchten ist, legen Sie die Eigenschaft-Einschränkungen:Bitte beachten Sie, dass der Aufruf ToTable() einmal ist genug!
Hier ist etwas darüber zu Lesen:
Konfiguration/Mapping-Eigenschaften und-Typen mit der Fluent-API
Außerdem könnte man das gleiche Ergebnis durch Verwendung von annotation Eigenschaften:
Hier etwas zu Lesen darüber:
Erste Code-Daten Anmerkungen
Edit:
Ich sah nur, dass Sie wollen, verwenden Sie die Tabelle zum speichern von binären Daten (byte[] Eigenschaften). Ich don ' T wirklich empfehlen dies zu tun, und oft der Speicherung der Datei auf der Festplatte ist besser (leichter zu implementieren Pfad-basierten Zwischenspeicherung zum Beispiel). Wenn Sie möchten, bleiben Sie immer noch wollen, dies zu Lesen ALSO Frage: MVC-Modell Wie man byte[] nullable?
Ich bin ziemlich sicher, dass das Problem eigentlich war, Ihren code in
PostConfiguration : EntityTypeConfiguration<Post>
. Wie ich schon schrieb, mitHasRequired()
ist in Bezug auf NavigationProperties somit EF-s assuption.Eigenschaft(c => c.PostText).IsRequired(); ja, ja, ja!
Ja, dieser Fehler wurde verursacht, indem er sagte-Modell.HasRequired(m => m ist.PostText). Das ist falsch. Der korrigierte code-Modell.Eigenschaft(p => p.PostText).IsRequired()
Es hat mir geholfen, ich konfiguriert es falsch. Danke.
InformationsquelleAutor pysco68
Ähnlichen situation fiel mir bei der fluent-API
Diese führen zu Fehler.
Änderte ich
Die ID wurde swithced.
InformationsquelleAutor Arun Prasad E S
Den zweiten Teil der Meldung: "stellen Sie sicher, dass es nicht explizit ausgeschlossen aus dem Modell und es ist ein gültiges navigation property" - Prüfen Sie, ob jemand(oder du) versehentlich ignorieren, dass das Modell in der Ignorieren-Methode.
InformationsquelleAutor Nemanja
Überprüfen Sie in Ihrer Klasse die Referenz zu setzen virtual-Attribut der Klasse.
InformationsquelleAutor mariobot