通过NHibernate创建SQLite触发器

时间:2012-03-28 21:54:30

标签: sqlite nhibernate

我正在使用NHibernate SchemaExport创建一个SQLite数据库。我必须向数据库添加更新,删除和插入触发器。这可能是NHibernate还是我必须手动运行SQL脚本来创建触发器?

2 个答案:

答案 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();