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.Name 而不是 instance.EntityType.Name 的表名约定。哦,好吧,如果有人想知道如何使用 MySQL 进行 AutoMap,至少这篇文章会在这里。:D

于 2013-06-13T00:22:56.373 回答