流畅的NHibernate SchemaExport到SQLite不会使表名多元化

时间:2010-06-03 00:11:09

标签: sqlite fluent-nhibernate sharp-architecture

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

        private void InitializeNHibernateSession()
        {
            Configuration cfg = NHibernateSession.Init(
                webSessionStorage,
                new [] { Server.MapPath("~/bin/MyNamespace.Data.dll") },
                new 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:

        public void Apply(FluentNHibernate.Conventions.Instances.IClassInstance instance)
        {
            instance.Table(Inflector.Net.Inflector.Pluralize(instance.EntityType.Name));
        }

这很好用于生成的sqlite db没有多元化的表名。

知道我缺少什么吗?

感谢。

1 个答案:

答案 0 :(得分:0)

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

        public void Apply(FluentNHibernate.Conventions.Instances.IClassInstance instance)
        {
            string tablename = Inflector.Net.Inflector.Pluralize(instance.EntityType.Name);
            instance.Table(tablename);
            System.Diagnostics.Debug.WriteLine(string.Format("Table = {0}", instance.TableName));
        }