0

開発中に SQLite をデータベースとして使用していますが、ドメインが完全にマップされるまで、最終的なデータベースの実際の作成を延期したいと考えています。だから私は Global.asax.cs ファイルにこれを持っています:

        private void InitializeNHibernateSession()
        {
            構成 cfg = NHibernateSession.Init(
                webSessionStorage、
                新しい [] { 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 を含むさまざまな規則をフックします。

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

これは、生成された sqlite db に複数形のテーブル名がないことを除いて、うまく機能しています。

私が見逃しているものはありますか?

ありがとう。

4

1 に答える 1

0

なぜこれが違いを生んだのかはわかりませんが、デバッグの過程でこれを行ったところ、現在は機能しています。

        public void Apply(FluentNHibernate.Conventions.Instances.IClassInstance インスタンス)
        {
            string tablename = Inflector.Net.Inflector.Pluralize(instance.EntityType.Name);
            instance.Table(テーブル名);
            System.Diagnostics.Debug.WriteLine(string.Format("Table = {0}", instance.TableName));
        }
于 2010-06-04T19:24:23.660 に答える