آموزش Sequence در EF Core

تهران آی تی / برنامــه نویــسـی / آموزش Sequence در EF Core

آموزش Sequence در EF Core

در بسیاری از پروژه‌های نرم‌افزاری، توسعه‌دهندگان به مقادیر عددی یکتا و افزایشی نیاز دارند؛ مثلاً برای شماره‌گذاری سفارش‌ها، فاکتورها یا تیکت‌های پشتیبانی. در EF Core، Sequence ابزار قدرتمندی را فراهم می‌کند که این مقادیر را به‌صورت کنترل‌شده تولید کند. Sequence به‌عنوان یک شیء مستقل در پایگاه‌داده عمل می‌کند و می‌تواند بین چندین جدول مختلف به اشتراک گذاشته شود. در این آموزش با نحوه تعریف و استفاده از Sequence در EF Core آشنا می‌شویم و کاربردهای رایج آن را بررسی می‌کنیم.

با ما همراه باشید با آموزش Sequence در EF Core و Asp.Net Core

Sequence در EF Core چیست و چه کاربردی دارد؟

در توسعه نرم‌افزارهای حرفه‌ای، گاهی نیاز است مقدار عددی یکتایی به‌صورت افزایشی تولید شود که تحت کنترل توسعه‌دهنده باشد. در چنین مواردی، استفاده از Sequence در EF Core بهترین گزینه است. Sequence یک شیء در پایگاه‌داده است که وظیفه تولید اعداد افزایشی منحصر‌به‌فرد را بر عهده دارد. برخلاف Identity که فقط به یک ستون از یک جدول خاص وابسته است، Sequence یک عنصر مستقل از جدول بوده و می‌تواند توسط چندین جدول مختلف به اشتراک گذاشته شود.

مزایای استفاده از Sequence در EF Core

  • مکان تولید مقدار پیش‌فرض برای چند جدول
  • کنترل دقیق بر شروع، حداقل، حداکثر و مقدار افزایش
  • مناسب برای تولید شماره سفارش، شماره فاکتور، شماره پیگیری و…
  • امکان استفاده دستی در کد برای پیش‌تخصیص مقدار (Preallocation)

کاربردهای رایج Sequence در EF Core

  • تولید شماره فاکتور در سیستم‌های فروش و خرید
  • تخصیص شماره پیگیری در سیستم‌های پشتیبانی
  • ایجاد شماره شناسایی کاربران (User Code)
  • تولید شماره سریال برای محصولات
  • نوبت‌دهی یا صف در سیستم‌های رزرو
  • استفاده در فرم‌های قبل از ذخیره‌سازی (Preallocate)

متدها و تنظیمات Sequence در EF Core

modelBuilder.HasSequence<int>("OrderNumbers", schema: "shared")
.StartsAt(1000)
.IncrementsBy(1)
.HasMin(1000)
.HasMax(99999)
.IsCyclic(false);

  • متد StartsAt(value) : مقدار ابتدایی که Sequence از آن شروع می‌شود.
  • متد IncrementsBy(value) : مشخص می‌کند Sequence با چه فاصله‌ای افزایش یابد.
  • متد HasMin(value) : حداقل مقداری که Sequence می‌تواند به آن برسد. معمولاً زمانی کاربرد دارد که IsCyclic(true) استفاده شود.
  • متد HasMax(value) : حداکثر مقداری که Sequence می‌تواند به آن برسد. اگر تنظیم نشود. حداکثر مقدار نوع داده استفاده می‌شود. (مثلاً int.MaxValue)
  • متد IsCyclic(true | false) : مشخص می‌کند آیا Sequence پس از رسیدن به حداکثر، دوباره از مقدار حداقل شروع کند یا خیر. پیش‌فرض: false
  • اتربیوت schema : مشخص می‌کند Sequence در کدام schema دیتابیس قرار گیرد. اگر تنظیم نشود، در schema پیش‌فرض قرار می‌گیرد.

استفاده از Sequence به‌عنوان مقدار پیش‌فرض

modelBuilder.Entity<Order>() .Property(o => o.OrderNo) .HasDefaultValueSql("NEXT VALUE FOR shared.OrderNumbers");

گرفتن مقدار دستی Sequence در کد

این روش زمانی کاربرد دارد، که بخواهید قبل از درج داده، مقدار Sequence را دریافت کنید.

var NextValue = _context.Database
.SqlQuery<long>($"SELECT NEXT VALUE FOR Shared.OrderSeq")
.AsEnumerable()
.First();

تفاوت StartsAt و HasMin

StartsAt فقط اولین مقدار تولیدی Sequence را تعیین می‌کند. اما HasMin یک محدودیت منطقی در پایگاه‌داده است که اجازه نمی‌دهد مقدار Sequence کمتر از آن شود (در مواقعی مثل وقتی Sequence cyclic باشد یا دستی مقداردهی شود).

  • برای شروع اولیه از StartsAt استفاده میشود.
  • برای محدودیت پایین‌دستی از HasMin استفاده میشود.

در اکثر موارد StartsAt کافی است، اما برای Sequenceهایی که Cyclic هستند یا امنیت داده برای دامنه مشخص مهم است، بهتر است HasMin هم استفاده شود

آیا لزومی داره از یک Sequence در چند جدول استفاده کنیم؟

فرض کن چند نوع موجودیت در سیستم وجود داره مثل: فاکتور خرید، فاکتور فروش، فاکتور برگشت، حالا اگر بخوای شماره فاکتور سراسری و یکتا باشه (مثلاً INV-1001, INV-1002, …) و در هیچ‌کدوم تکرار نشه، باید همه از یک Sequence مشترک استفاده کنن.

جستجو کنید
دسترسی سریع
دسته ها

طراحی و پیاده سازی پروژه های طراحی سایت دانشجویی

انجام، اجرا و طراحی پروژه های طراحی سایت برای دانشجویان با HTML CSS PHP ASP.NET JAVA و ... با کمترین هزینه. برای مشاهده نمونه کارها و یا دریافت مشاوره رایگان از تیم طراحی سایت تهران آی تی با ما در تماس باشید. ما بهترین پروژه های طراحی سایت را با حداقل هزینه برای شما طراحی میکنیم - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

مطالب مرتبط

لطفا از مطالب مرتبط با این پست دیدن فرمایید

جــذاب های هفته

از پربازدیدترین مطالب تهران آی تی در هفته ای که گذشت دیدن فرمایید

باورکردنی نیست فقط با 300 هزار تومان

طراحی سایت شما + طراحی اپلیکیشن هدیه و رایگان
این یک حراج است در مدت زمان محدود - شرکت های زیادی سایت های ارزان طراحی میکنند اما آیا کیفیت لازم را دارا هستند؟ طراحی سایت ارزان به همراه اپلیکیشن رایگان هدیه برای اولین بار توسط تهران آی تی مخصوص سازمان ها و کسب و کار های کوچک و بزرگ و حتی جدید تیم طراحی سایت تهران آی تی در کنار شماست تا شناخته شوید - مشاوره رایگان 09121486770

مــشاوره و مشاهده نمونه کارها

پشتیبانی 24 ساعته

تیم تهران آی تی در هفت روز هفته و 24 ساعت روز آماده پاسخ گویی به سوالات کاربران و ارائه مشاره رایگان میباشد