حسین سلیمانی
حسین سلیمانی
خواندن ۲ دقیقه·۱ سال پیش

ساخت یک foreign key در entity framwork


بسم الله الرحمن الرحیم

فرض کنید که یک جدول برای مشتریان(Customers) و یکی برای درخواست های مشتری ها (Orders) میخواهید.جدول مشتری ها نیاز به ستون های [Id] [Name] [City] [BrithDay] دارد.

و جدول Orders نیاز به ستون های [Id][CustomerId][OrderDate] دارد.

رابطه این دو جدول به صورت One-To-Many است یعنی یک Customer می تواند تعداد مختلفی Order داشته باشد ولی Order فقط می تواند یک Coustomer داشته باشد.

برای اینکه این رابطه را با استفاده از EF-core ایجاد کنیم باید از Navigation property استفاده کنیم.


در جدول Customer که می تواند تعداد زیادی order داشته باشد یک کالکشن از نوع Order اضافه می کنیم مانند کد زیر

https://gist.github.com/hossien014/a7d227cd3ee15bc3def813e549dedf4e

و برای order باید یک ستون به اسم CoustomerId بسازیم که در واقع foreign key برای وصل کردن این دو جدول به هم است.ولی برای اینکه به نرم افزار بفهمانیم CustomerId به کدام جدول ربط دارد باید یک Navigation Property به صورت زیر نیز اضافه کنیم.

متغیر Customer که از جنس Customer است فقط برای این است که نحوه اتصال دو جدول را نشان دهد.

https://gist.github.com/hossien014/85cc06dac9ceae5210ad9b5571141fce

ورودی های ممنوعه

اگر بخواهید برای مقادیر ورودی به دیتا بیس یکسری محدویت ها وضع کنید باید از اتربیوت DeniedValues استفاده کنید.

مثلا فرض کنید که نمی خواهید کسی عبارت "trump"را به عنوان نام وارد کند.برای اینکار باید به روش زیر عمل کنید.

https://gist.github.com/hossien014/07f5d626d7af988781794efcb8bda97a
نکته : این محدویت ها در سطح برنامه اتفاق می افتد نه در سطح دیتا بیس.یعنی برای کسی که به صورت مستقیم با دیتابیس در ارتباط است محدودیتی نیست .

اضافه کردن مقدار پیشفرض

مثلا اگر کاربر سفارشی را ثبت کرد به صورت پیشفرض از تاریخ سیستم برای تاریخ ثبت سفارش استفاده شود.

اسان ترین روش این است که هنگام ساخت مانند مثال زیر از عبارت DateTime.Now استفاده کنید.

https://gist.github.com/hossien014/e92c62b7b3e963c41670c73d247d9bd3

اما راه بهتر اضافه کردن این مقدار پیشفرض در سطح دیتا بیس است .برای اینکار باید تغییراتی در فایل کانتکس خود که معمولا در پوشه Data است ایجاد کنید .

https://gist.github.com/hossien014/069a09ddf68ac2cc100222e29753c6de

برای مطالعه بیشتر: Entity Properties

شبکه های اجتماعی :
یوتیوب https://www.youtube.com/@BA_HOSSIEN




foreign keyدات نتEFCoredatabase
برنامه نویس hossien014.github.io
شاید از این پست‌ها خوشتان بیاید