Fluentnhibernate - إعداد القيمة الافتراضية لأعمدة DB (SQL Server)
-
21-09-2019 - |
سؤال
هل يعرف أي شخص الطريقة التي يمكنني من خلالها تعيين القيمة الافتراضية للعمود ، لذا على سبيل المثال ، عندما أقوم بإنشاء 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 للقيام بذلك.
سيكون من الجيد سماع آراء الآخرين أيضًا