我在开发过程中使用 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 没有复数表名。
知道我错过了什么吗?
谢谢。