Entity Framework - CTP4 - Code First - Wie deaktiviere ich die automatische Pluralisierung?
Mein Entitätsname ist "Kontakt" und mein Tabellenname ist "Kontakt". Die standardmäßige Pluralisierungsunterstützung veranlasst EF4 jedoch, nach einer Tabelle mit dem Namen "Kontakte" zu suchen. Hat jemand eine Idee, wie man die Pluralisierungsunterstützung ausschaltet?
Diepost hat einige Details zur Unterstützung der Pluralisierung. Aber gib mir trotzdem keine Antwort.
Ich sehe den folgenden Text inDiepost. Zuallererst weiß ich nicht, welche physische .tt-Datei ich brauche, um diese Änderung vorzunehmen. Außerdem möchte ich, dass diese Funktion nur für eine App und nicht für alle deaktiviert wird.
Beim Codegenerator in T4 Toolbox ist die Pluralisierung in Visual Studio 2010 standardmäßig aktiviert. Wenn Sie die DAL aus Kompatibilitätsgründen ohne Pluralisierung generieren müssen, können Sie diese Option deaktivieren, indem Sie der .tt-Datei die folgende Zeile hinzufügen bevor die generator.Run () -Methode aufgerufen wird.
C #
generator.Pluralize = false;
VB
generator.Pluralize = False
*****AKTUALISIEREN****
Following ist der Code, den ich verwende, und ich erhalte die folgende Fehlermeldung: -
Kontak
public class Contact
{
public int ContactID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Title { get; set; }
public DateTime AddDate { get; set; }
public DateTime ModifiedDate { get; set; }
}
Kontext:
public class AddressBook : DbContext
{
public DbSet<Contact> Contact { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Contact>().MapSingleType().ToTable("dbo.Contact");
}
}
Das Hauptprogramm: -
using (var context = new AddressBook())
{
var contact = new Contact
{
ContactID = 10000,
FirstName = "Brian",
LastName = "Lara",
ModifiedDate = DateTime.Now,
AddDate = DateTime.Now,
Title = "Mr."
};
context.Contact.Add(contact);
int result = context.SaveChanges();
Console.WriteLine("Result :- " + result.ToString());
}
Und ich erhalte den folgenden Fehler bei "context.Contact.Add (contact);": -
System.InvalidOperationException: Das Modell, das den Kontext 'AddressBook' unterstützt, hat sich geändert, seit die Datenbank erstellt wurde. Löschen / aktualisieren Sie die Datenbank manuell oder rufen Sie Database.SetInitializer mit einer IDatabaseInitializer-Instanz auf. Beispielsweise löscht und erstellt die RecreateDatabaseIfModelChanges-Strategie die Datenbank automatisch und erstellt sie neu. Optional können neue Daten hinzugefügt werden. bei System.Data.Entity.Infrastructure.CreateDatabaseOnlyIfNotExists1.InitializeDatabase(TContext context) at System.Data.Entity.Infrastructure.Database.Initialize() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.EfInternalQuery
1.Initialize () at System.Data.Entity.DbSet1.ActOnSet(Action action,EntityState newState, TEntity entity) at System.Data.Entity.DbSet
1.Add (TEntity-Entität) at CodeFirst.Client.Program.Main (String [] args) in E: \ Ashish \ Research \ VS Solutions \ EntityFramework \ CodeFirstApproach_EF_CTP4 \ CodeFirst.Client \ Program.cs: line 35
Ich bin sicher, dass ich irgendwo einen dummen Fehler mache, nur unfähig, es herauszufinden. Könnte jemand bitte einige Anweisungen geben?
ANTWORTE Mit Hilfe von Pault habe ich dieses Problem und die Lösung beschriebenHie.