در بسیاری از موارد در طراحی پایگاه داده ممکن است که ویوهایی را تعریف کنیم. که از خاصیت ویو ها استفاده کنیم. ویوها این خاصیت را دارند با آنها مانند یک جدول بانک اطلاعاتی رفتار می شود در حالی که خود جدول بانک اطلاعاتی نیستند و اطلاعات خود را از جداول دیگر می خوانند. به همین منظور فضایی را از بانک اطلاعاتی اشغال نمی کنند.
مشکلی که در این جا وجود دارد این است که با استفاده از entity framework در حالت عادی به سختی می توان از ویوها استفاده کرد. در این نکته به توضیح استفاده از ویو ها در Entity Framework Code first می پردازیم. برای استفاده از Entity Framework Code first باید کتابخانه های این بسته بر روی پروژه نصب شده باشد که در این آموزش نصب این بسته توضیح داده شده است. پس از این که این بسته بر روی سیستم نصب شد باید با توجه به ویویی که در بانک داریم یک کلاس با توجه به فیلد های آن می سازیم. دقت کنید که همه انواع داده ای باید مطابق با نوع داده ای تعریف شده در ویوی بانک باشد. کد زیر یک مثال برای این مطلب می باشد:
public class v1 { public int Id { get; set; } public string Name { get; set; } public int? GroupId { get; set; } public int? UserId { get; set; } public decimal? Price { get; set; } public int? CustomerId { get; set; } public string Date { get; set; } public int? FactorNumber { get; set; } }
پس از انجام این کار باید باید این کلاس را به context معرفی کنیم و بگوییم که این کلاس باید به کدام ویو نگاشت(map) شود. برای این که Entity Framework بتواند از یک کلاس استفاده کند باید در آن کلاس یک کلید هم معرفی کنیم. به همین منظور یکی از فیلدهای ویو را به عنوان کلید معرفی می کنیم. این فیلد بهتر است که یکی از فیلد هایی باشد که شبیه به کلید است. یعنی این که کلید مورد نظر عددی باشد و تا حد امکان هم یکتا باشد البته اگر یکتا نباشد هم برنامه کار می کند. برنامه زیر این مطلب را شرح می دهد.
public class Context : DbContext { public IDbSet<v1> v1 { get { return Set<v1>(); } } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(v1Map.Map()); base.OnModelCreating(modelBuilder); } } public class v1Map { public static EntityTypeConfiguration<v1> Map() { var map = new EntityTypeConfiguration<v1>(); map.HasKey(v1 => v1.Id); map.ToTable("v1"); return map; } }
توضیحات بیشتر در باره ی DbContext را در سری آموزش های entity framework ببینید. توجه داشته باشید که کلاس v1Map کلاس مربوط به map کردن می باشد و کلاس اصلی برای کار با بانک اطلاعاتی کلاس context است. این کلاس یک تابع به نام map دارد که هنگام ساخته شدن مدل این تابع صدا زده می شود. در داخل همین تابع به Entity Framework می گوییم که باید این کلاس به تابع به نام v1 نگاشت(map) می شود و یک کلید هم برای آن مشخص شده است. و در نهایت در تابع main برنامه بقیه تنظیمات اتصال به پایگاه داده را مشخص می کنیم و ازآن استفاده می نماییم. کد تابع main در زیر آمده است.
internal class Program { private static void Main(string[] args) { var a = new Context(); a.Database.Connection.ConnectionString = "Data Source=.;Initial Catalog=test;Integrated Security=True"; a.Database.CreateIfNotExists(); Console.WriteLine("Hi Itpro.ir User"); foreach (var source in a.v1.ToList()) { Console.WriteLine(source.Price); } Console.ReadKey(); } }
همانگونه که در کد بالا دیده می شود بعد از این که Connection String مربوط به بانک اطلاعاتی مشخص شد و به بانک متصل شدیم می توانیم از آن استفاده کنیم. که در این مقاله مقادیر price را در کنسول چاپ می کند. توجه داشته باشید که در این برنامه فقط خواندن اطلاعات از ویو ها مورد بررسی قرار گرفت و برای این که بتوانیم اعمال آپدیت و درج را انجام دهیم باید از stored procedure ها و مفهوم stored procedure mapping در entity framework استفاده کنیم.
یادگیری برنامه نویسی برای متخصصین حوزه کامپیوتر این روزها یک الزام به حساب می آید. از جمله محبوب ترین زبان های برنامه نویسی دنیا می توانیم به زبان برنامه نویسی سی شارپ ، زبان برنامه نویسی جاوا ، زبان برنامه نویسی پایتون ، زبان برنامه نویسی سی پلاس پلاس و زبان برنامه نویسی SQL ( لازمه هر زبان دیگری ) و زبان برنامه نویسی PHP اشاره کنیم.
برای آموزش برنامه نویسی می توانید با خیال راحت در قالب دوره های آموزش برنامه نویسی سایت توسینسو ، آموزش سی شارپ ، آموزش جاوا ، آموزش پایتون ، آموزش جنگو ، آموزش PHP ، آموزش جاوا اسکریپت ، آموزش برنامه نویسی اندروید ، آموزش SQL و آموزش MySQL را بصورت جامع و حرفه ای آموزش ببینید.
بنیانگذار توسینسو و برنامه نویس
مهدی عادلی، بنیان گذار TOSINSO. کارشناس ارشد نرم افزار کامپیوتر از دانشگاه صنعتی امیرکبیر و #C و جاوا و اندروید کار می کنم. در زمینه های موبایل و وب و ویندوز فعالیت دارم و به طراحی نرم افزار و اصول مهندسی نرم افزار علاقه مندم.
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود