Создание триггера SQLite через NHibernate - PullRequest
1 голос
/ 29 марта 2012

Я создаю базу данных SQLite с помощью NHibernate SchemaExport. Я должен добавить обновления, удалить и вставить триггеры в базу данных. Возможно ли это с помощью NHibernate или мне нужно запускать сценарии SQL для создания триггера вручную?

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Вам необходимо использовать Вспомогательные объекты базы данных

Для отображения по коду, вам нужно добавить их непосредственно в HbmMapping, который вы компилируете из картографа:

mappingDocument.databaseobject =
    new[]
    {
        new HbmDatabaseObject
        {
            Items = new object[]
            {
                new HbmCreate { Text = new[] { "CREATE TRIGGER ..." } }, 
                new HbmDrop { Text = new[] { "DROP TRIGGER ..." } } } 
            } 
    };
0 голосов
/ 29 марта 2012

После некоторых исследований я понял, что можно установить соединение 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...