2010-11-20 3 views
0

Ich versuche, NHibernate/FluentNHibernate zu verwenden, um eine Tabelle in meiner Datenbank zu erstellen. Ich habe es anscheinend größtenteils herausgefunden, aber wenn ich den Test durchführe, wird der Tisch nicht erstellt. Ich sehe im Configuration-Objekt, dass die ClassMappings eine große fette Null ist, obwohl ich dachte, ich habe den Benutzer FluentNHibernate, um sie von einer Assembly zu konfigurieren. Ich verstehe das etwas, aber mir fehlt irgendwo eine Verbindung ... Hier sind die Codeschnipsel, vielleicht kann jemand sehen, was ich vergesse?NHibernate ClassMappings = 0

Hier ist meine Dataconfig-Klasse.

public static FluentConfiguration GetFluentConfiguration() 
    { 
     string hibernateCfgFile = @"C:\Users\kenn\Documents\Visual Studio 2008\Projects\NHibernateTestTwo\Infrastructure\hibernate.cfg.xml"; 
     return Fluently.Configure(new Configuration().Configure(@hibernateCfgFile)) 
      .Mappings(cfg => cfg.FluentMappings.AddFromAssembly(typeof(AddressMap).Assembly)); 
    } 

Hier ist die Testklasse.

[Test, Explicit] 
    public void SetupDatabase() 
    { 
     FluentConfiguration conf = DataConfig.GetFluentConfiguration(); 
     conf.ExposeConfiguration(BuildSchema).BuildSessionFactory(); 
    } 

    private static void BuildSchema(Configuration conf) 
    { 
     new SchemaExport(conf).SetOutputFile("drop.sql").Drop(false, true); 
     new SchemaExport(conf).SetOutputFile("create.sql").Create(false, true); 
    } 

ist hier die Zuordnungen

public AddressMap() 
    { 

     Table("Address"); 
     DynamicUpdate(); 
     Id(a => a.Id).GeneratedBy.GuidComb(); 
     Map(a => a.AddressOne).Not.Nullable().Length(100); 
     Map(a => a.AddressTwo).Length(100); 
     Map(a => a.City).Not.Nullable().Length(100); 
     Map(a => a.state).Not.Nullable().Length(100); 
     Map(a => a.zip).Not.Nullable().Length(50); 
     Map(a => a.Primary).Not.Nullable(); 

    } 

Die hibernate.cfg.xml Datei

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
<session-factory> 
    <property name="connection.driver_class"> 
     NHibernate.Driver.SqlClientDriver 
    </property> 
    <property name="connection.connection_string"> 
     Data Source=MYPC;Initial Catalog=NHibernateSample;Integrated Security=True; 
    </property> 
    <property name="show_sql">true</property> 
    <property name="dialect"> 
     NHibernate.Dialect.MsSql2005Dialect 
    </property> 
    <property name="adonet.batch_size">100</property> 
    <!--<property name="proxyfactory.factory_class"> 
     NHibernate.ByteCode.LinFu.ProxyFactoryFactory, 
     NHibernate.ByteCode.LinFu 
    </property>--> 
    <property name="proxyfactory.factory_class"> 
     NHibernate.ByteCode.Castle.ProxyFactoryFactory, 
     NHibernate.ByteCode.Castle 
    </property> 
</session-factory> 

Ich bin nur nicht sicher, was es fehlt ... Es ist deutlich zu redet mit der DB Ursache, wenn ich den Namen der Datenbank zu etwas ändern, die nicht existiert es eine Ausnahme trozt, ich bin stecken - Ich habe das immer wieder diskutiert und habe es noch nicht herausgefunden, daher würde jede Hilfe sehr geschätzt werden.

Danke!

+0

Oh Turd ... Ich habe vergessen, die AddressMap-Klasse öffentlich zu machen. Nun, wenn jemand darüber stolpert, wird es hoffentlich helfen. :) – Kenn

Antwort

1

Siehe meinen Kommentar ... Vergessen Sie nicht, Ihre Kartenklassen öffentlich zu machen oder FluentNHibernate wird sie nicht sehen.