如何通过 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 类,但找不到将其用于此目的的方法。
最佳答案
我之前曾使用 session.Connection.CreateCommand
和 session.Transaction.EnlistCommand
成功运行原始 SQL。
这是我做过的类似事情的片段:
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())
// ...
}
}
关于nhibernate - 使用NHibernate执行DDL语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2023120/