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 nav DataProvider
  • 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ēt SQL paziņojumu ģenerēšanu
  • Augstas drošības prasības. dažreiz DB Lietotājam ir tikai EXEC 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:

è & iquestéåå & frac34çæè & iquest °

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