هل يمكنني إنشاء عمود من Nvarchar (Max) باستخدام FluentMigrator؟

StackOverflow https://stackoverflow.com/questions/2496695

  •  21-09-2019
  •  | 
  •  

سؤال

استخدام FluentMigrator, ، الخلق الافتراضي ل Column استخدام .AsString() ينتج عنه nvarchar(255). هل هناك طريقة بسيطة (قبل تعديل رمز FluentMigrator) لإنشاء عمود من النوع nvarchar(MAX)?

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

المحلول

يمكنك إنشاء طريقة تمديد للالتفاف .ASSTRING (int32.maxvalue) داخل .asmaxString ()

على سبيل المثال

internal static class MigratorExtensions
{
    public static ICreateTableColumnOptionOrWithColumnSyntax AsMaxString(this ICreateTableColumnAsTypeSyntax createTableColumnAsTypeSyntax)
    {
        return createTableColumnAsTypeSyntax.AsString(int.MaxValue);
    }
}

نصائح أخرى

حسنًا ، لقد وجدت ذلك. في الأساس ، استخدم .ASSTRING (int32.maxvalue). من المؤسف أنه لا توجد طريقة .asaxaxstring () ، لكنني أعتقد أنه من السهل وضع ...

يمكنك استخدام AsCustom("nvarchar(max)") وحزمه للتمديد

إذا كنت تقوم في كثير من الأحيان بإنشاء أعمدة/جداول مع نفس الإعدادات أو مجموعات الأعمدة ، فيجب عليك إنشاء طرق تمديد لترحيلك!

على سبيل المثال ، قام كل واحد من طاولاتي تقريبًا بإنشاء أعمدة محدثة و updatedat ، لذلك قمت بتجميع طريقة تمديد صغيرة حتى أتمكن من القول:

Create.Table("Foos").
    WithColumn("a").
    WithTimestamps();

أنا فكر في لقد قمت بإنشاء طريقة التمديد بشكل صحيح ... أعرف أنها تعمل ، لكن FluentMigrator لديه ملف كثيرا من الواجهات ... هنا:

public static class MigrationExtensions {
    public static ICreateTableWithColumnSyntax WithTimestamps(this ICreateTableWithColumnSyntax root) {
        return root.
            WithColumn("CreatedAt").AsDateTime().NotNullable().
            WithColumn("UpdatedAt").AsDateTime().NotNullable();
    }
}

وبالمثل ، فإن كل واحد تقريبًا من طاولاتي لديه مفتاح أساسي int يسمى "ID" ، لذلك أعتقد أنني سأضيف Table.CreateWithId("Foos") لإضافة هذا المعرف دائمًا. لست متأكدًا ... لقد بدأت للتو في استخدام FluentMigrator اليوم ، ولكن يجب أن تكون دائمًا إعادة تهيئة عندما يكون ذلك ممكنًا!

ملاحظة: إذا قمت بعمل طرق مساعد/تمديد لترحيلك ، فيجب عليك ذلك مطلقا أبدًا أبدًا تغيير ما تفعله هذه الأساليب. إذا قمت بذلك ، يمكن لشخص ما محاولة تشغيل ترحيلك ويمكن أن تنفجر الأشياء لأن أساليب المساعد التي استخدمتها لإنشاء الترحيل رقم 1 تعمل بشكل مختلف الآن عما كانت عليه سابقًا.

فيما يلي رمز إنشاء الأعمدة في حالة تساعدك على إنشاء أساليب مساعد: https://github.com/schambers/fluentmigrator/blob/master/src/fluentmigrator/builders/create/column/createcolumnexpressionbuilder.cs

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top