我正在使用NHibernate SchemaExport创建一个SQLite数据库。我必须向数据库添加更新,删除和插入触发器。这可能是NHibernate还是我必须手动运行SQL脚本来创建触发器?
答案 0 :(得分:2)
您需要使用Auxiliary Database Objects
对于按代码映射,您需要将它们直接添加到从映射器编译的HbmMapping
中:
mappingDocument.databaseobject =
new[]
{
new HbmDatabaseObject
{
Items = new object[]
{
new HbmCreate { Text = new[] { "CREATE TRIGGER ..." } },
new HbmDrop { Text = new[] { "DROP TRIGGER ..." } } }
}
};
答案 1 :(得分:0)
经过一些研究,我意识到可以获得Session连接,然后你可以运行任何你想要的DDL命令。在我的情况下,它将是:
var commandText = new StringBuilder();
var command = session.Connection.CreateCommand();
commandText.AppendLine("CREATE TRIGGER books_insert_trg AFTER INSERT ON books ");
commandText.AppendLine("BEGIN");
commandText.AppendLine("UPDATE books SET sort=title_sort(NEW.title),uuid=uuid4() WHERE id=NEW.id;");
commandText.AppendLine("END");
command.CommandText = commandText.ToString();
command.ExecuteNonQuery();