Kopsavilkums par Entity Framework priekšrocībām un trūkumiem un kā to izmantot
Summary Advantages
Entity Framework
Vai to nodrošina dalībvalstis ORM
Framework, kas paredzēta, lai veicinātu datu slāņa ātru attīstību mazās lietojumprogrammās.
nuget
Vairāk nekā 185 W lejupielādes, kas norāda, ka .Net izstrādātāji joprojām izvēlas izmantot EF
no. bet EF
Nodrošinot ērtības, ir arī daudz trūkumu. Šie scenāriji, manuprāt, nav jāpiemēro EF:
- ne-
SQL Server
Datu bāze un šādas datu bāzes navDataProvider
- Augstas veiktspējas prasības. Dažu sarežģītu vaicājumu gadījumā
EF
veiktspēja nav ļoti laba, un izstrādātāji nevar kontrolētSQL
paziņojumu ģenerēšanu - Augstas drošības prasības. dažreiz
DB
Lietotājam ir tikaiEXEC
Atļaujas, savukārt EF automātiski ģenerētās klases nav viegli izmantot, vai arī jums tās jāraksta pašiem.
Dažām lielo un vidējo uzņēmumu lietojumprogrammām bieži ir iepriekš minētās situācijas, un pašlaik nav piemēroti izmantot EF.
Kas attiecas uz ORM izmantošanu, es personīgi domāju NHibernate
Konfigurēt ir pārāk apgrūtinoši. Ja nav īpašu prasību, varat izmēģināt ServiceStack.OrmLite, lai apmierinātu pieprasījumu. Vai tieši ADO.Net
Ja vēlaties izmantot EF, ieteicams izmantot EF jaunāko stabilā laidiena versiju (atbalstīta) DbContext
+ Code first
Veids, kā attīstīties). Tad izlasiet 《Programming Entity Framework Code First》
ar 《Programming Entity Framework DbContext》
Šīs divas grāmatas (pašlaik nav ķīniešu valodas versijas). izmantojiet DbContext
+ Code first POCO
+ Repository
Režīmu, lai to varētu garantēt EF
Esiet Repository
Izolācija, garantēta pārbaudāmība un tā jānomaina ORM
Rāmis pat tiek nomainīts ADO.Net
Mainiet mazliet mazāk kodu.
nodrošināt Koda paraugs lejupielādēt (.Net 4+EF5
)
Parauga kodā POCO
ar EF
no Configurations
, kas saistīts ar EF Configurations
Atsevišķi garantēts DB Model
Tīrība. Izvēlieties šeit kaut ko mazu, lai visi varētu redzēt
Pirmais ir datubāzes struktūra, es vispirms izmantoju kodu, datu bāze tiks automātiski izveidota, kad pirmā faktiskā datubāzes darbība, izveidotā datu bāzes struktūra ir šāda:
Datu bāzes ģenerēšanas stratēģija ir EFContext
Klases statiskajā konstrukcijā:
static EFContext() { / / Specify the database generation strategy to generate when it does not exist // can also be specified as: // DropCreateDatabaseAlways (always delete the original database rebuild) // DropCreateDatabaseIfModelChanges (delete the original database rebuild after the database model changes) Database.SetInitializer(new CreateDatabaseIfNotExists()) }
Album
Tabula Configuration
Iestatījumi:
public class AlbumConfiguration : EntityTypeConfiguration { public AlbumConfiguration() { / / Specify the name of the data table ToTable('dbo.Album') / / Set the primary key HasKey(x => x.Id) / / Set the data column name and other properties Property(x => x.Id).HasColumnName('Id').HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity).IsRequired() Property(x => x.AlbumName).HasColumnName('AlbumName').IsRequired().HasMaxLength(50) Property(x => x.ArtistId).HasColumnName('ArtistId').IsRequired() / / Set the foreign key constraint HasRequired(foreignKeyTable => foreignKeyTable.Artist) .WithMany(primaryKeyTable => primaryKeyTable.Albums) .HasForeignKey(foreignKeyTable => foreignKeyTable.ArtistId) / / Set up many-to-many associations HasMany(thisTable => thisTable.Tags) .WithMany(anotherForeignKeyTable => anotherForeignKeyTable.Albums) .Map(relationTable => relationTable .MapLeftKey('TagId') .MapRightKey('AlbumId') .ToTable('AlbumTags') ) } }
Pārrakstīt EFContext
Funkcijā OnModelCreating
Funkcija, izmantojiet mūsu pielāgoto Configurations
:
protected override void OnModelCreating(DbModelBuilder modelBuilder) { base.OnModelCreating(modelBuilder) / / Set the database generation configuration modelBuilder.Configurations.Add(new ArtistConfiguration()) modelBuilder.Configurations.Add(new AlbumConfiguration()) modelBuilder.Configurations.Add(new TagConfiguration()) }
Repository
Vairāk par modeli šeit neteikšu. Apskatiet projekta AbstractDbAccessor saturu. EF krātuve tiek ieviesta EFDbAccessor un Repository direktorijās projekta ConcreteDbAccessor direktorijā EntityFramework.
Sākotnēji izmantots trīs līmeņu arhitektūrā ADO.NET
Veiciet pamatā esošo izstrādi, roku darbs sql
Izraksts ir samontēts. Tad satiku vienu MVC+EF
projektu, es to realizēju. EF
Spēcīgs.
Tas ir sava veida Microsoft iepakots veids. ADO.NET
Datu entītijas modelis, datu bāzes struktūra ir ORM
Modelis ir kartēts lietojumprogrammā.
priekšrocība:
Kodolīgs Linq to Sql
Izraksts ievērojami uzlabo izstrādātāja efektivitāti, nerakstiet sarežģītu sql
Paziņojums
2. Vairs nav jāpārvalda, kā lietojumprogramma izveido savienojumu ar datu bāzi
3. EF
Var izmantot datu pakalpojumiem un OData Service
Infrastruktūrai
Trūkumi:
Sakarā ar linq
Pēc pārskata sastādīšanas sql
Šim automātiski ģenerētajam sql
Izrakstu nevar kontrolēt
2. EF
Darbības mehānisms patērē lielu atmiņas daudzumu, kas ievērojami samazina programmas efektivitāti, kā rezultātā samazinās lietotāja pieredze klienta pusē
3. Kad datu struktūra mainās, tā ir jāatjaunina EF
dati model
Dažreiz var gadīties, ka atjaunoto entītijas klasi nevar atrast
Izraksts no: https://blog.csdn.net/wulex/article/details/79286310