문제

nhibernate를 통해 DDL 문을 어떻게 실행할 수 있습니까?

분명히, i ~하지 않다 매핑 파일에서 스키마를 자동 생성하고 싶습니다. 내 DDL은 다음 줄을 따라 일반 텍스트 파일에 저장됩니다.

CREATE TABLE Foo (Bar VARCHAR(10))
GO
CREATE TABLE Hello (World INTEGER)
GO

나는 이것들을 순서대로 순서대로 순환하고 그들 각각을 실행하고 싶습니다. SQLConnection을 열고 SQLCOMMAND를 통해 실행할 수는 있지만이 작업을 수행하는 좋은 방법이 있으면 NHibernate를 통과하고 싶습니다. 이것은 주로 가능한 한 데이터베이스 불가지론으로 유지되기를 원하기 때문입니다. 지금 SQL DB가 있지만 나중에 Oracle 또는 DB2를 구현해야 할 수도 있습니다 ...

.NET v3.51 및 nhibernate v2.1을 사용하고 있습니다. 나는 nhibernate schemaexport 클래스를 보았지만이 목적을 위해 이것을 사용하는 방법을 볼 수 없었습니다.

도움이 되었습니까?

해결책

ISSESSION의 연결 속성에서 IDBConnection을 얻을 수 있지만 SQLCommand에서는이 작업을 수행해야합니다. DDL 실행은 Nhibernate의 범위를 벗어납니다.

다른 팁

나는 사용했다 session.Connection.CreateCommand 그리고 session.Transaction.EnlistCommand RAW 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())
        // ...
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top