Fluentnhibernate - إعداد القيمة الافتراضية لأعمدة DB (SQL Server)

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

سؤال

هل يعرف أي شخص الطريقة التي يمكنني من خلالها تعيين القيمة الافتراضية للعمود ، لذا على سبيل المثال ، عندما أقوم بإنشاء DB من تعيينات ، سيكون لدي عمود DateTime مع GetDate () كقيمة افتراضية؟

لقد جربت هذا حتى الآن (يبدو تمامًا مثل ما أحتاجه) لكنه لا يعمل

this.Map(x => x.LastPersistedOn, "DateModified") 
    .Access.Property() 
    .Default("getdate()"); 
هل كانت مفيدة؟

المحلول

لقد حاولت للتو تعيين بعض القيم الافتراضية وعملت كما هو متوقع. أنا أستخدم Fluent كرد من Git ، 24.05.2010 ، لذا فإن تحديث نسختك قد يحل مشكلتك.
رسم الخرائط

public class SampleEntity
{
    public virtual DateTime DateTimeProperty { get; set; }
}

مع

 public class SampleEntityMap
        : ClassMap<SampleEntity>
{
   public SampleEntityMap()
   {
    Map(x => x.DateTimeProperty, "DateTimeColumn")
             .Access.Property()  //actually not necessary 
             .Not.Nullable()
             .Default("getDate()");
   }
}

سيؤدي ذلك إلى إنتاج SQL التالي (من الإخراج إلى وحدة التحكم)

create table SampleEntity(
   DateTimeColumn DATETIME default  getDate()  not null
  )

--
دوم

نصائح أخرى

طريقة القيام بذلك هي تعيين DateTime الحالي في الكود بدلاً من استخدام القيمة الافتراضية في قاعدة البيانات. ثم تعامل مع عمود عادي. بدا لي غريباً بعض الشيء بالنسبة لي في البداية من خلفية تصميم تعتمد على الطراز ، ولكن إدارة القيم الافتراضية على مستوى POCO هي طريقة DDD للقيام بذلك.

سيكون من الجيد سماع آراء الآخرين أيضًا

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