2013-06-12 44 views
0

我試圖用自動映射爲MySQL配置流利NHibernate和我遇到了問題。我搜索了很多,嘗試了很多不同的東西,但還沒有找到解決方案。流利的NHibernate與MySQL的單聲道和ASP MVC 3

總之,這裏是我的NHibernate的配置

return 
    Fluently.Configure() 
     .Database(
      MySQLConfiguration.Standard.ConnectionString(cs => cs.FromConnectionStringWithKey("Db")) 
        .Dialect<NHibernate.Dialect.MySQL5Dialect>() 
        .ShowSql() 
       ) 
      .Mappings(
       x => 
       x.AutoMappings 
        .Add(
         FluentNHibernate.Automapping.AutoMap.AssemblyOf<CoreRegistry>() 
         .Where (t => t.IsDefined(typeof(AutoMap), false)) 
         .Conventions.Setup (c => { 
          c.Add<NullConvention>(); 
          c.Add<PrimaryKeyConvention>(); 
          c.Add<TableNameConvention>(); 
         }) 
        ) 
      ).BuildSessionFactory(); 

這裏是我的模型:

[AutoMap] 
public class MyNewTable 
{ 
    public virtual int Id {get; set;} 

    public virtual string Column1 {get; set;} 
    [Null] 
    public virtual string Column2 {get; set;} 
} 

這裏是我的代碼試圖插入記錄:

using (var session = sf.OpenSession()) 
using (var tx = session.BeginTransaction()) { 
    var myReallyTable = new MyNewTable 
    { 
     Column2 = null, 
     Column1 = "ghrtehrthrtete" 
    }; 

    session.Save (myReallyTable); 

    tx.Commit(); 
} 

最後,這裏是sql它實際上是生成的:

INSERT INTO myproject.Core.MyNewTable, myproject.Core, Version=1.0.4911.33346, Culture=neutral, PublicKeyToken=null (Column1, Column2) VALUES (?, ?) 

出於某種原因,這是我的表名前注入我的項目的組裝名,後面還附加程序集的版本和東西。我已經嘗試將默認模式設置爲我的數據庫名稱。我嘗試將方言切換到MySQLDialect,但這也不起作用。

如果任何人有任何光線照在此,我會非常感激。

謝謝

回答

1

那麼我回來,並顯示什麼是我的笨蛋。

我有使用instance.Name代替instance.EntityType.Name的表名約定。哦,至少這篇文章會在這裏,如果有人想知道如何使用MySQL的AutoMap。 :D