سؤال

كيف يمكنني تنفيذ عبارة DDL عبر Nibernate؟

أن تكون واضحا، أنا لا تريد إنشاء مخططي التلقائي من ملفات التعيين الخاصة بي. يتم تخزين DDL الخاص بي في ملفات نصية عادية على غرار:

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

أريد أن أحمل هذه من خلال هذه من أجل وتنفيذ كل منهم. يمكنني فقط فتح SQLConnection وتنفيذها عبر SQLCommand ولكن أود أن أذهب إلى Nibernate إذا كانت هناك طريقة لطيفة للقيام بذلك. هذا هو أساسا لأنني أريد أن أبقى كأغذية قاعدة بيانات قدر الإمكان: لدي SQL DB الآن ولكن قد أحتاج إلى تنفيذ Oracle أو DB2 لاحقا ...

أنا أستخدم .NET V3.51 و Nhibernate v2.1. نظرت إلى فئة Schemaexport Limbernate ولكن لم أستطع رؤية طريقة لاستخدام هذا لهذا الغرض.

هل كانت مفيدة؟

المحلول

يمكنك الحصول على IDBConnection من خاصية اتصال iSession ولكنك ستحتاج إلى القيام بذلك مع SQLCommand. تنفيذ DDL خارج نطاق أحمق.

نصائح أخرى

لقد استخدمت session.Connection.CreateCommand و session.Transaction.EnlistCommand قبل النجاح لتشغيل SQL RAW.

إليك مقتطف لشيء مماثل لوجهت:

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