2010-10-28 20 views
0

J'ai Fluent NHibernate classe pour MySQL configurateur:Configuration MySQL pour Fluent NHibernate

class MySqlInitializer : INHibernateInitializer 
{ 
    public Configuration GetConfiguration() 
    { 
     var dbServer = "localhost"; 
     var dbUsername = "root"; 
     var dbName = "nhibernate"; 
     var dbPassword = ""; 
     var ormAssembly = "NHibernate_MySQL.Domain"; 

     var config = Fluently.Configure() 
      .Database(MySQLConfiguration 
          .Standard 
          .ConnectionString(cs => cs 
                 .Server(dbServer) 
                 .Database(dbName) 
                 .Username(dbUsername) 
                 .Password(dbPassword))) 
      .Mappings(
       x => 
       x.FluentMappings.AddFromAssembly(Assembly.Load(ormAssembly))); 

     return config.BuildConfiguration(); 
    } 
} 

Tout est correct de données. Donc, j'ai aussi test d'intégration (xUnit):

[Fact] 
    public void GenerateMigrationScript() 
    { 
     var config = new MySqlInitializer().GetConfiguration(); 
     var factory = (ISessionFactoryImplementor) config.BuildSessionFactory(); 

     using (var session = factory.OpenSession()) 
     { 
      var updateScripts = config 
       .GenerateSchemaUpdateScript(factory.Dialect, 
              new DatabaseMetadata((DbConnection) session.Connection, factory.Dialect)); 

      foreach (var updateScript in updateScripts) 
      { 
       Console.WriteLine(updateScript + ";"); 
      } 
     } 
    } 

Mes entités:

public interface IHiberEntutyBase 
{ 
    Guid Id { get; set; } 
} 

public class HiberEntity : IHiberEntutyBase 
{ 
    public virtual Guid Id { get; set; } 

    public virtual string Name { get; set; } 
} 

class HiberEntityMap : ClassMap<HiberEntity> 
{ 
    public HiberEntityMap() 
    { 
     Id(x => x.Id).GeneratedBy.Guid(); 

     Map(x => x.Name); 
    } 
} 

Quand je Runs GenerateMigrationScript() écrit « MySql.Data.MySqlClient.MySqlException: base de données inconnue 'NHibernate' ". Aidez-moi s'il vous plaît.

Répondre

3

Cela signifie ce qu'il dit: vous n'avez pas de base de données appelée "nhibernate". NHibernate ne crée pas de bases de données, seulement des schémas (tables, clés).

La base de données doit exister.