Automapping for MySQL を使用して Fluent NHibernate を構成しようとしていますが、問題が発生しました。私はかなりグーグルで検索し、さまざまなことを試しましたが、まだ解決策を見つけていません。
とにかく、これが私の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に切り替えてみましたが、それでもうまくいきませんでした。
誰かがこれを照らす光を持っているなら、私はとても感謝しています.
ありがとう