"Der Entitätstyp <model - > ist nicht Teil des Modells für den aktuellen Kontext."
Bin ich mit dieser Ausgabe die Aktualisierung meiner Datenbank 1 Spalte in einer Zeit, in asp.net mit der web-api. Ich versuche eine Abfrage SETZEN, aktualisieren Sie einfach einen Wert in der Zeile anstelle von aktualisieren, die ein und setzen den rest auf null. Ich machte ein eigenständiges Modell außerhalb der controller in der update damit ich tun konnte, ein zu einer Zeit. Wenn ich dieses line - db.Entry(user).State = EntityState.Modified;
in den regler, wo es erroring. Irgendwelche Tipps, wie kann ich dieses Problem beheben?
Dies ist meine separate ViewModel ich nehme in in die put-Methode:
namespace WebAPI.Models.ViewModels
{
public class UserViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
}
Dies ist mein controller-Aufruf in der Methode mit dem ViewModel in meine parameter:
public HttpResponseMessage PutUser(int id, UserViewModel user)
{
HttpResponseMessage response;
if (db.User.IsInRole("Admin"))
{
try
{
db.Entry(user).State = EntityState.Modified;
db.SaveChanges();
}
catch (DbUpdateConcurrencyException)
{
if (!UserExists(id))
{
response = new HttpResponseMessage(HttpStatusCode.NotFound);
return response;
}
else
{
throw;
}
}
response = new HttpResponseMessage(HttpStatusCode.NoContent);
return response;
}
Dies ist mein DBContext
Datei:
public partial class Entities : DbContext
{
public Entities()
: base("name=Entities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<User> Users { get; set; }
}
}
InformationsquelleAutor der Frage Shawn | 2014-03-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Kommt der Fehler aus, wie Sie initialisiert den Daten-Kontext
db
.Das user-Objekt erstellt wurde, in einem separaten
db
so, wenn Sie versuchen, zu aktualisierenuser
die aktuelle db nicht weiß, über diesesuser
Objekt.Könnte man es lösen, indem man einen Benutzer
Alternativ könnte man sicherstellen, dass die Daten den Kontext, den Sie zum erstellen der
user
Objekts ist der gleiche wie der, der versucht, zu aktualisieren der Benutzer.Macht das Sinn für Sie?
InformationsquelleAutor der Antwort The Jonas Persson
Dies immer passiert, wenn dein repository braucht, um dynamischen Zugriff auf andere Entity Framework DbContext was bedeutet, dass unterschiedliche Datenbanken.
Überprüfen Sie Ihre Daten, die Verbindungszeichenfolge in der web.config-Datei für jede Entität Frmework DbContext.
Beispiel:
prüfen von Metadaten in connectionString, wenn es auf eine korrekte DbContext.
In diesem Beispiel, es verweist auf demx Datei namens "CRMEntities".
InformationsquelleAutor der Antwort ChinaHelloWorld
Stellen Sie sicher, dass die richtigen Metadaten Teil sollte das gleiche sein wie in der edmx.
InformationsquelleAutor der Antwort Muhammad Bilal
Aktualisieren Sie das Modell, um die ID-Eigenschaft.
Dann tun
var e = db.Entry(user);
e.Property(p => p.FirstName).Modified = true;
Die Eigenschaft Linie ist, wie Sie angeben, die einzelnen Felder.
InformationsquelleAutor der Antwort jwatts1980
Ihre viewmodel ist nicht ein vollständig Qualifizierter Benutzer-Objekt. Als solche müssen Sie, eins zu bekommen.
Diesem Aufruf
db.User.IsInRole("Admin")
zeigt der aktuelle Benutzer bereits. Sollten Sie nur ändern, und dann behaupte, dass für änderungenInformationsquelleAutor der Antwort Travis J
Ich habe immer diese Ausnahme, wie gut. Ich löste es, indem Sie einen Rechtsklick auf die Entität.edmx-Modell in der Abbildung und Erfrischend die Verbindung zu meiner Datenbank per "Update Model From Database".
Ich weiß nicht, warum dies funktioniert, aber es hat, zumindest in meinem Fall.
InformationsquelleAutor der Antwort
Mir das passiert, weil jemand erstellt eine neue connection-string in der app.config durch Ausschneiden und einfügen aus einer vorhandenen.
Das Ergebnis sah so aus:
Hinweis, wie Db2Context noch Referenzen DbContext1 in Ihren Metadaten...
InformationsquelleAutor der Antwort Jeff Dege
Stellen Sie sicher, dass der server 64 oder 32 bit und kompilieren Sie die Anwendung erneut.
InformationsquelleAutor der Antwort Bruno Gomes
Ich hatte das gleiche Problem empfangen die Ausnahme, wenn ich versuchte, fügen Sie eine Instanz meiner Klasse des DbSet. Mein problem war, dass die definition der Tabelle in der Datenbank nicht mit meinem aktuellen Objekt (2 nicht-null-Eigenschaften fehlten bei meinem Modell). Ich fügte hinzu, die zwei Eigenschaften meine Klasse war der Fehler Weg.
InformationsquelleAutor der Antwort HarryK
Ich hatte das gleiche Problem.
Meine probleme wurde ich nicht setzen keine Zuordnung Entity/Tabelle.
Nach der Zuordnung meiner Person, der probleme wurde gelöst.
InformationsquelleAutor der Antwort Diallo