0

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に切り替えてみましたが、それでもうまくいきませんでした。

誰かがこれを照らす光を持っているなら、私はとても感謝しています.

ありがとう

4

1 に答える 1

1

さて、私は戻ってきて、私がどんなジャッカスであるかを示すことができます.

instance.EntityType.Name の代わりに instance.Name を使用するテーブル命名規則がありました。まあ、MySQL で AutoMap を行う方法を知りたい人がいれば、少なくともこの投稿はここにあります。:D

于 2013-06-13T00:22:56.373 に答える