2016-03-22 7 views
0

Ich verwende NHibernate 4 und Fluent NHibernate, um Klassen der Datenbank zuzuordnen. Die Datenbank befindet sich in einer SQL Server 2008 Express-Instanz. Warum auf der Erde SchemaUpdate mit erstellt alle Tabellen erwarten, dass diese ein:Warum erstellt SchemaUpdate diese Tabelle nicht?

public class UserMap : ClassMap<UserModel> 
{ 
    public UserMap() 
    { 
     this.Table("User"); 

     this.Id(x => x.Id) 
      .GeneratedBy.Native(); 

     this.Map(x => x.Name) 
      .Length(int.MaxValue) 
      .Not.Nullable(); 
    } 
} 

Antwort

0

gerade herausgefunden, dass SchemaUpdate leise ausfällt, wenn sie versuchen, eine Tabelle zu erstellen namens „User“.

einen anderen Namen für diese Tabelle (zB "Benutzer") löst das Problem:

public class UserMap : ClassMap<UserModel> 
{ 
    public UserMap() 
    { 
     this.Table("Users"); 

     this.Id(x => x.Id) 
      .GeneratedBy.Native(); 

     this.Map(x => x.Name) 
      .Length(int.MaxValue) 
      .Not.Nullable(); 
    } 
} 
+1

Vielleicht könnte man dann versuchen, Tabellennamen zu entkommen: 'this.Table ("\ 'User \'");' (db agnostic escaping, die Verwendung von Back Tilt '\' ') oder' this.Table ("[User]"); '(SQL Server-spezifisches Escaping, unter Verwendung von eckigen Klammern). –