استفاده از پراپرتی های محاسباتی در Entity Framework
استفاده از پراپرتی های محاسباتی در Entity Framework
در بسیاری از مواقع وقتی شما با Entity Framework در Asp.Net یا MVC کار می کنید، شما نیاز دارید تا محاسباتی روی اطلاعاتی که نمایش می دهید انجام دهید داشته باشید. برای مثال می خواهید تخفیف یک کالا را محاسبه کنید برای این کار روش های زیادی وجود. ولی یکی از روش های پر کاربردی که استفاده می شود، استفاده از پراپرتی محاسباتی داخل کلاس های Models یا ViewModels می باشد.
فرض کنید شما یک کلاسی به نام Product داخل Models به صورت زیردارید
public class Product { public Product() { } [System.ComponentModel.DataAnnotations.Key] public int ProductId { get; set; } public string ProductName { get; set; } public int Price { get; set; } public byte DiscountPersent { get; set; } // این اتربیوت برای این است که این پراپرتی به فیلد در دیتابیس تبدیل نشود [System.ComponentModel.DataAnnotations.Schema.NotMapped] // پراپرتی های محاسباتی فقط گت دارند public int CalcDiscount { get { int newPrice = (Price - (Price * DiscountPersent / 100)); return newPrice; } } }
حال شما می خواهید تخفیف هر محصول را محاسبه کنید و قیمت نهایی را نمایش دهید برای این کار کافیست یک پراپرتی محاسباتی به نام CalcDiscount به صورت زیر بنویسید
// این اتربیوت برای این است که این پراپرتی به فیلد در دیتابیس تبدیل نشود [System.ComponentModel.DataAnnotations.Schema.NotMapped] // پراپرتی های محاسباتی فقط گت دارند public int CalcDiscount { get { int newPrice = (Price - (Price * DiscountPersent / 100)); return newPrice; } }
پراپرتی فوق به دلیل داشتن اتربیوت NotMapped به یک فیلد در دیتابیس تبدیل نمی شود و شما فقط می توانید هنگام نمایش اطلاعات یک محصول یا محصولات از این پراپرتی ها استفاده کنید و تا دیگر نیازی به محاسبه این عمل در ویو و یا در جای دیگر نداشته باشید.
نکته مهم. پراپرتی های محاسباتی فقط بند Get دارند.
نظر / سوال