1
我正在用NHibernate SchemaExport創建一個SQLite數據庫。我必須添加更新,刪除和插入觸發器到數據庫。這可能與NHibernate或我必須運行SQL腳本手動觸發器創建?通過NHibernate創建SQLite觸發器
我正在用NHibernate SchemaExport創建一個SQLite數據庫。我必須添加更新,刪除和插入觸發器到數據庫。這可能與NHibernate或我必須運行SQL腳本手動觸發器創建?通過NHibernate創建SQLite觸發器
經過一番研究,我意識到可以獲得會話連接,並從那裏你可以運行任何你想要的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();
您需要使用Auxiliary Database Objects
對於由代碼映射,你需要將它們直接添加到您從映射器編譯HbmMapping
:
mappingDocument.databaseobject =
new[]
{
new HbmDatabaseObject
{
Items = new object[]
{
new HbmCreate { Text = new[] { "CREATE TRIGGER ..." } },
new HbmDrop { Text = new[] { "DROP TRIGGER ..." } } }
}
};
是的,這似乎是更好的解決方案,將觸發器創建與映射一起使用。不過,我有一個問題。我使用的NHibernate 3.2與代碼映射(不流利的NHibernate),我無法弄清楚如何做到這一點。你有沒有機會一些示例代碼如何這沒有XML映射? – zszep 2012-03-31 05:46:12