Ich verwende Entity Framework 6 Code-First mit einer vorhandenen Datenbank, aber mit Problemen bei der Zuordnung meiner Entitäten zu den Datenbanktabellen.Code-first: Zuordnung von Entitäten zu vorhandenen Datenbanktabellen
Normalerweise würde ich Datenbank-First-Ansatz verwenden und haben meine Entität und Kontext-Code generiert, aber die Verwendung des Designers ist ein großer Schmerz geworden.
Ich habe Database.SetInitializer (null) gesetzt, wie ich EF nicht mein Schema ändern möchte.
Datenbankschema:
-Code-first:
public class Project
{
public int ProjectId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
public class ReleaseControlContext : DbContext
{
public ReleaseControlContext()
: base(ConfigurationManager.ConnectionStrings["ReleaseControl"].ConnectionString)
{
Database.SetInitializer<ReleaseControlContext>(null);
}
public DbSet<Project> Projects { get; set; }
}
Telefonvorwahl:
using(var context = new ReleaseControlContext())
{
var projects = context.Projects.ToList();
}
Die folgende Ausnahme ausgelöst:
SqlException: Ungültige Objektnamen 'dbo.Projects'. Diese
ist, weil meine Datenbanktabelle Projekt und nicht Projekte sind. Ich möchte nicht die DbSet<Project>
meines Kontextes in "Project" umbenennen, weil das semantisch inkorrekt wäre.
Frage:
Muß ich die fließend API/Daten Anmerkungen zwischen der Projekt Datenbanktabelle und der DbSet<Project> Projects
Sammlung zur Karte benutzen?
genannt werden, warum es nicht funktioniert ; Die Tabelle muss Projekte heißen, die etwas schiefgehen, aber wie Sie bereits sagten, können Sie den Namen mit Data Annotation erzwingen [Tabelle ("Projekte")]. –
versuchen, den Initialisierer aufzurufen, bevor Sie den DBContext erstellen; leg es irgendwo hin. –