Warum ist die EF code first-Modell werfen backing Kontext Ausnahme? Mit 4.0.3
Hier ist die Ausnahme:
Dem Modell hinter der 'ScannerContext" - Kontext hat sich geändert, seit die
Datenbank wurde erstellt. Erwägen Sie die Verwendung von Code First-Migrationen zu aktualisieren
die Datenbank (http://go.microsoft.com/fwlink/?LinkId=238269).
Bekomme ich jedes mal wenn ich meine Anwendung. Ich kann nicht herausfinden, was es bedeutet. Ich denke, es bedeutet, dass etwas nicht richtig zugeordnet, aber ich kann nicht herausfinden, was. Ich bin mit den code-first-Modell, und ich habe eine bestehende Datenbank, die ich will, völlig custom mappings. Jetzt habe ich alles in meinen Klassen den gleichen Namen wie meiner Datenbank beseitigen Sie mögliche cuases.
Ausnahme wird geworfen, wenn ich versuche zu .Add()
die Person, den Kontext.
Der Person, wie es in der Datenbank
Die Einheit in meinem "DataLayer"
public class EAsset
{
public int i_GID { get; set; }
public EAssetType Type { get; set; }
public EOrgEnvironment Environment { get; set; }
public EUser Contact { get; set; }
public string s_Name { get; set; }
public string s_Role { get; set; }
public DateTime d_Added { get; set; }
public DateTime d_LastUpdated { get; set; }
public bool b_Retired { get; set; }
public EAsset()
{
Type = new EAssetType();
Environment = new EOrgEnvironment();
Contact = new EUser();
d_Added = DateTime.Now;
d_LastUpdated = DateTime.Now;
}
}
Das Kontext-Objekt (mit versuchter Tabelle Zuordnung und Schlüssel-Zuweisung)
public class ScannerContext : DbContext
{
public ScannerContext()
: base("LabDatabase") { }
public DbSet<EAsset> EAssets { get; set; }
public DbSet<EAssetType> EAssetTypes { get; set; }
public DbSet<EOrgEnvironment> EOrgEnvironments { get; set; }
public DbSet<EUser> EUsers { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<EAsset>().HasKey(k=>k.i_GID).ToTable("t_Assets");
modelBuilder.Entity<EAssetType>().HasKey(k => k.i_ID).ToTable("t_Asset_Types");
modelBuilder.Entity<EOrgEnvironment>().HasKey(k => k.i_ID).ToTable("t_Org_Environments");
modelBuilder.Entity<EUser>().HasKey(k => k.i_ID).ToTable("t_Users");
base.OnModelCreating(modelBuilder);
}
}
Das Programm
class Program
{
static void Main(string[] args)
{
EAsset Entity = new EAsset { s_Name = "jewri-pc" };
var sContext = new ScannerContext();
sContext.EAssets.Add(Entity);
sContext.SaveChanges();
}
}
- Sie haben Felder in der DB sind Feste Länge haben, und diese Fremdschlüssel auf die DB-Tabelle, die nicht abgebildet im Modell.
- Bedeutet das, dass meine DB zwingt mich zum anzeigen der verknüpften Elemente in EF? Ihr zwingt den FK ' s und die MaxLengths?
- Ich fügte die fehlenden Beziehungen zu dem Modell, aber ich bekomme immer noch den gleichen Fehler. Ich möchte zu einem Punkt, wo es funktioniert, so kann ich damit beginnen, herauszufinden, wie alles zusammen geht. Ich habe viele Personen noch nicht enthalten ist, und planen diese Objekte robust, aber die bekomme ich sogar eine Entität in der DB der Verwendung von code first.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für EF-runtime-version 4.0.3 /4.0
Mit diesem code installiert, ich bin jetzt Jagd auf Fehler im Zusammenhang mit, dass alle meine Beziehungen entfielen im Modell. Die FK-Einschränkungen zwingen mich zu fügen Sie die fehlenden relationalen Elemente.
Gefunden info hier. Erklären Sie die Bedeutung ein wenig.
Das Modell sichern die <Database> Kontext hat sich geändert, seit dem die Datenbank erstellt wurde
Enable-Migration-ContextTypeName EmployeeProject.Modelle.DepartmentContext
Bedeutet, Sie haben zu schreiben, der name Ihres Projekts.Modelle.Namen Kontext
Wird es funktionieren.