سلام استاد . وقت به خیر . چطوری میتونیم از زمان ثبت تراکنش توی ویرایش تراکنش ها جلوگیری کنیم ؟ یعنی فیلدهای دیگه تغیر کنند ولی زمان ایجاد تراکنش با زدن دکمه ی ویرایش تغیر نکنه ؟ من کدشو گذاشتم داخل کانستراکتور که هر بار کلاس ساخته شد زمان رو خودش اتوماتیک ثبت کنه . یک بار هم به روش دستی بدون کانستراکتور موقع ساخت تراکنش جدید گذاشتم که بازهم نشد .
کد بروز رسانی تاریخ رو فقط در حالت افزودن قرار دهید و از حالت ویرایش بردارید
استاد من فیلد زمان رو به صورت readonly و داخل کانستراکتور مقداردهی کردم ولی الان همه ی تراکنش هام شده یه زمان اون هم زمان ورود به برنامه . کجای منطق کدم اشتباه کردم ؟ به صورت زیر :
public partial class Thing
{
private readonly DateTime _CreatTIME;
public DateTime CreatTIME {
get
{
return _CreatTIME;
}
}
public Thing()
{
this._CreatTIME = DateTime.Now;
}
و تراکنش هام و کاربران برنامه رو فرزند Thing کردم که اتوماتیک زمان ساخت رو بگیره . ولی اونجوری شد که گفتم
نباید در سازنده مقدار بدید
زمان ثبت جدید مقدار بدید
استاد این کار شما رو کردم ارور زیر رو موقع ویرایش میده :
SqlException: The conversion of a datetime2 data type to a datetime data type resulted in an out-of-range value.
The statement has been terminated.
کدم به صورت زیره :
if (TransactionID == 0)
{
f.DateTime = DateTime.Now;
db.AccountingRepository.Insert(f);
}
else
{
f.ID = TransactionID;
db.AccountingRepository.Update(f);
}
db.Save();
DialogResult = DialogResult.OK;
بعد از اینکه مشخصات رو میگیرم کد بالا اجرا میشه .
میگه تاریخ خارج از بازه است
باید میلادی ذخیره کنید نه شمسی