[英]Execute NHibernate-generated prepared statements in SQL Server Management Studio
[英]Using NHibernate to execute DDL statements
如何通過NHibernate執行DDL語句?
為了清楚起見,我不想從映射文件中自動生成我的模式。 我的DDL存儲在純文本文件中:
CREATE TABLE Foo (Bar VARCHAR(10))
GO
CREATE TABLE Hello (World INTEGER)
GO
我想按順序遍歷這些並執行它們中的每一個。 我可以打開一個SqlConnection並通過SqlCommand執行但我想通過NHibernate,如果有一個很好的方法來做到這一點。 這主要是因為我希望盡可能保持數據庫不可知:我現在有一個SQL數據庫,但我可能需要稍后實現Oracle或DB2 ...
我正在使用.Net v3.51和NHibernate v2.1。 我查看了NHibernate SchemaExport類,但看不到將此用於此目的的方法。
我成功運行原始SQL之前使用了session.Connection.CreateCommand
和session.Transaction.EnlistCommand
。
這是我做過的類似事情的片段:
using (var command = _session.Connection.CreateCommand())
{
_session.Transaction.Enlist(command);
command.CommandText = "select foo from bar where id = @id";
var versionIdParameter = command.CreateParameter();
versionIdParameter.ParameterName = "id";
versionIdParameter.Value = id;
command.Parameters.Add(versionIdParameter);
using(var reader = command.ExecuteReader(CommandBehavior.SequentialAccess))
{
while (reader.Read())
// ...
}
}
您可以從ISession的Connection屬性獲取IDbConnection,但是您需要使用SqlCommand執行此操作。 執行DDL超出了NHibernate的范圍。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.