0

我在开发过程中使用 SQLite 作为我的数据库,并且我想推迟实际创建最终数据库,直到我的域完全映射。所以我在 Global.asax.cs 文件中有这个:

        私有无效 InitializeNHibernateSession()
        {
            配置cfg = NHibernateSession.Init(
                网络会话存储,
                新 [] { Server.MapPath("~/bin/MyNamespace.Data.dll") },
                新的 AutoPersistenceModelGenerator().Generate(),
                Server.MapPath("~/NHibernate.config"));

            if (ConfigurationManager.AppSettings["DbGen"] == "true")
            {
                var export = new SchemaExport(cfg);
                export.Execute(true, true, false, NHibernateSession.Current.Connection, File.CreateText(@"DDL.sql"));
            }
        }

AutoPersistenceModelGenerator 连接了各种约定,包括像这样的 TableNameConvention:

        公共无效应用(FluentNHibernate.Conventions.Instances.IClassInstance 实例)
        {
            instance.Table(Inflector.Net.Inflector.Pluralize(instance.EntityType.Name));
        }

这很好地工作,因为生成的 sqlite db 没有复数表名。

知道我错过了什么吗?

谢谢。

4

1 回答 1

0

好吧,我不确定为什么这会有所作为,但是在调试过程中,我这样做了,现在它可以工作了:

        公共无效应用(FluentNHibernate.Conventions.Instances.IClassInstance 实例)
        {
            字符串表名 = Inflector.Net.Inflector.Pluralize(instance.EntityType.Name);
            instance.Table(tablename);
            System.Diagnostics.Debug.WriteLine(string.Format("Table = {0}", instance.TableName));
        }
于 2010-06-04T19:24:23.660 回答