با استفاده از این ها میتونیم یه سری کانفیگ روی entity ها پیاده سازی کنیم
از این دستور context.database.ensureCreated استفاده میکنیم این دستور میاد از روی entity که داریم میاد دیتا بیس رو درست میکنه فقط دقت کنید که این توی نسخه ی تست استفاده میشه نه نسخه ی production اونجا ممکنه بزنه کل دیتا ها رو خراب کنه
خوب وقتی که روی id کلیک میکنیم و میبینیم که اون رو به عنوان کلید اصلی در نظر گرفته و identity در نظرش گرفته و گفته که یکی یکی هم میره بالا با استفاده از not mapped میتونیم یه پراپرتی رو در دیتابیس ذخیره نکنیم
خوب حالا وقتی که این کار رو کردیم برای این که بیاد و روی دیتا بیس اعمال بشه ما باید اول قبلش اون اولی که ساختیم رو پاک کنیم و دوباره بیام بسازیمش
خوب همونطوری که میبنید دیگه price رو نداریم و این که تایپی که توی دیتا بیس برای name تعیین شده nvarchar هستش که ما میخوایم این تغییر بدیم ، چجوری؟
اگر بخوایم یه پارامتر اجباری باشه اینطوری میایم از attribute این استفاده میکنیم:
و همونطوری که میبینید اجازه برای null بودن نداره حتی میتونیم محدودیت هم بزاریم براش :
یعنی تا 500 تا کارکتر خوب حالا اگر به هر دلیلی بخوایم نامی که توی دیتا بیس داریم این پراپرتی رو ذخیره میکنیم متفاوت باشه از این نامش توی این کلاس یا همون entity میتونیم اینطوری از این قابلیت استفاده کنیم
اینجا به طور مثال میخوام با des ذخیره بشه
میتونیم اسم table رو هم عوض کنیم :
میتونیم schima هم برای جدولمون تعیین کنیم ، این طوری :
خوب یه قابلیت دیگه ای که داریم اینه که میتونیم با استفاده از on model builder بیایم و تعیین کنیم که هر کدوم از دیتا بیس ها که براش اسکیما تعیین نکردیم به صورت دیفالت براشون bugeto ست بشه
خوب حالا یه داستانی که هست اینه که وقتی که میخوایم یه کلید اصلی رو خودمون تعیین کنیم میتونیم بیایم و اینطوری تعیینش کنیم:
با key و keyId و بعد برای تعیین این که چجوری توی دیتا بیس این ها افزایش پیدا کنند یعنی وقتی که میخوایم رکورد جدید اضافه کنیم اون کلیده چجوری شمارش میشه و تغییر میکنه میتونیم از databaseGenerated استفاده کنیم توی این حالت عکس بالا به صورت همون دیفالت خوده دیتا بیسه که یکی یکی عددش رو میبره بالا حالا اگر بخوایم تغییرش بدیم اینجوری باید بنویسیم
حالا وقتی که none میزاریم دیگه باید خودمون المان ها رو درست کنیم و بفرستیم باهاش توی دیتابیس
خوب حالا اگر تعیین نکنیم و درست نکنیم چی میشه ؟ اینطوری میشه که به صورت دیفالت اولیه 0 میشه ولی وقتی که میخوایم دومی رو اضافه کنیم به ارور میخوریم :
اینطوری درست میشه :
خوب بهتره که توی لایه ی entity از هیچ چیزی به جر کلاس های ساده ی C# استفاده نکنیم، ولی انجا همونطوری که میبینید ما اومدیم این ها رو به یه سری namespace دیگه وابسته شون کردیم که این خلاف قواعد کد نویسی تمیز هستش که برای همین میایم از fulent استفاده میکنیم
اینجوری لایه ی domain بدون داشتن وابستگی اجرا میشه