Ի՞նչ մոտեցումներ կան EF Core էկոհամակարգի շրջանակում։
sobes.tech AI
Պատասխան AI-ից
Entity Framework Core համակարգի շրջանակներում երեք հիմնական մոտեցումներ (approach) կան տվյալների բազայի սխեմայի հետ աշխատելու համար՝
-
Database First: Տվյալների բազայի սխեման արդեն գոյություն ունի, և EF Core-ը սերֆեյշավորում է մոդելային դասեր (entities) և
DbContext՝ հիմք ընդունելով այդ սխեման:- Առավելություններ: Արագ մեկնարկ՝ առկա տվյալների բազայով, սխեման ամբողջությամբ վերահսկվում է տվյալների բազայի կողմից:
- Կորուստներ: Փոփոխությունները տվյալների բազայում պահանջում են նորից կոդի սերֆեյշավորում, ինչը կարող է վերագրել հարմարեցված կոդը:
// Օրինակ՝ հրամանի համար՝ գոյություն ունեցող տվյալների բազայից սերֆեյշավորում // Scaffold-DbContext "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -
Code First: Դուք սահմանում եք մոդելները (entities) և
DbContext-ը C#-ում։ EF Core-ը ստեղծում կամ թարմացնում է տվյալների բազայի սխեման՝ հիմնվելով այդ սահմանումներին՝ օգտագործելով միգրացիաներ:- Առավելություններ: Մոդելների կոդի լիակատար վերահսկողություն, ինտեգրում ծրագրի կոդի հետ, միգրացիաների օգտագործում՝ սխեմայի փոփոխությունները կառավարելու համար:
- Կորուստներ: Պահանջվում է միգրացիաների կառավարում, սխեմայի փոփոխությունները միշտ սկսվում են կոդի փոփոխություններից:
// Օրինակ՝ մոդելի դաս՝ Code First մոտեցմամբ public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } -
Model First: Այս մոտեցումը, թեև հին տարբերակներում (EF-ի նախքան Core) եղել է, EF Core-ում չի հանդիսանում բնօրինական և ինքնուրույն մոտեցում՝ նույն իմաստով, ինչ Database First կամ Code First։ Իրականում, Model First-ը EF Core-ում նշանակում է մոդելների գրել կոդում (ինչպես Code First-ում) և դրանց հիման վրա տվյալների բազա սերֆեյշավորել։ Վիզուալ մոդելների դիզայներ չկա, ինչպես EF 6-ում, ուստի այն հաճախ դիտվում է որպես Code First-ի մասնակի դեպք՝ որտեղ դուք ձեռքով նկարագրում եք մոդելը առանց օգտագործելու արդեն գոյություն ունեցող տվյալների բազա:
Հիմնական հատկանիշները՝
| Approach | Աշխատանքի սկիզբ | Տվյալների բազայի սխեմայի կառավարում | Փոփոխությունների գործիքներ |
|---|---|---|---|
| Database First | Գոյություն ունեցող տվյալների բազա | Հետո ձեռքով տվյալների բազայում | Scaffold-DbContext |
| Code First | Մոդելային դասեր և DbContext C#-ում |
EF Core միգրացիաներ | Add-Migration, Update-Database |
| Model First (EF Core-ում) | Մոդելային դասեր և DbContext C#-ում (առանց գոյություն ունեցող բազայի) |
EF Core միգրացիաներ կամ սերֆեյշավորում գործարկման ժամանակ | Add-Migration, Update-Database |
Ընտրությունը կախված է նախագծի սկզբնական պայմաններից և թիմի նախընտրություններից։ Code First-ը առավել տարածված է նոր նախագծերում՝ ճկունության և զարգացման գործընթացի ինտեգրման համար։