• 1400/02/27

نحوه استفاده View دیتابیسی :

سلام استاد عزیز 

بنده یه View  داخل دیتابیس برای گزارش هام ساختم که join جداول من هست ، حالا از این view میخواهم داخل DbContext استفاده کنم ، روشی که من دارم استفاده میکنم Database First  هست . 

قبلا وقتی با EF6 و Data Base First  کار میکردم View دیتابیسی رو نمایش میداد و من میتونستم به EDMX  اضافه کنم ، ولی داخل EF Core  نمیتونم این کار رو انجام بدم لطفا راهنمایی کنید در حالت Database first  باید چیکار کنم .

View رو هم به صورت دستی به Dbcontext  اضافه کردم ولی به محض این که تغییری در دیتابیس ایجاد بشه و Dbcontext به روز رسانی کنم view من از Dbcontext  پاک میشه .

با تشکر

  • 1400/02/27
  • ساعت 08:14

سلام 

در EF Core دیگه EDMX نداریم دوست من 


  • 1400/02/27
  • ساعت 09:08

ممنونم از پاسخ استاد عزیر  بله این رو میدونم که EDMX  نداریم ، در حال حاضر چطور میتونم به View  دیتابیسی به Dbcontext  اضافه کنم با توجه به شرایطی که بالا براتون توضیح دادم  (Database First)


  • 1400/02/27
  • ساعت 09:16

لینک زیر را مشاهده بفرمائید 

 

https://www.michalbialecki.com/2020/09/09/working-with-views-in-entity-framework-core-5/


  • 1400/02/27
  • ساعت 12:50

برای اینکه با هر بار تغییر اطلاعات توی Dbcontext پاک نشه 
میتونی اون اطلاعات رو توی یکی کلاس دیگه بریزی 
و باستفاه از partial , internal  کلاس ها و یکی کردن namespace ها این دوتا کلاس رو بهم متصل کنی

 

namespace Request.Models
{
   public partial class TblRequest
{
....
}
}

 

namespace Request.Models.MetaData
{
   internal class RequestMetaData
   {
کدهایی که میخای داشته باشی و تعییر نکنه
   }
}

namespace Request.Models
{
   [MetadataType(typeof(Request.Models.MetaData.RequestMetaData))]
   public partial class TblRequest
   {
   }
}

 


  • 1400/02/27
  • ساعت 12:53

با Fluent Api هم میتونید View رو به Context متصل کنید ، یه بار انجام دادم ولی کدش خاطرم نیست 


  • 1400/02/27
  • ساعت 13:51

سلام  ممنونم

اتفاقا همین روشی رو که گفتین به ذهن خودم رسید بعد از این که بررسی کردم 

باید یه کلاس پارشال ایجاد کنیم که View  ها رو داخل ان قرار بدیم 

 از نویسنده اون مقاله که اقای مدائنی معرفی کردن پرسیدم  . 

جواب جالبی دادن 

 

 


logo-samandehi