50 parasta Entity Framework -haastattelukysymystä ja vastausta (2026)

Entity Frameworkin tärkeimmät haastattelukysymykset ja vastaukset

Entity Framework -haastatteluun valmistautuminen tarkoittaa niiden kysymysten ennakointia, jotka paljastavat hakijan todellisen kyvykkyyden. Entity Framework -haastattelukysymykset paljastavat ajattelun, suorituskykytietoisuuden ja sen, miten hakijat soveltavat käsitteitä käytäntöön.

Entity Frameworkin hallinta avaa työpaikkoja modernissa kehitystyössä datalähtöisistä alustoista pilvipalveluihin. Käytännön kokemus kehittää analyyttisiä kykyjä, vahvistaa teknistä syvyyttä ja tukee tiimejä. Rekrytoivat johtajat arvostavat käytännönläheistä ongelmanratkaisua, skaalautuvaa suunnittelua, nuorten mentorointia ja vastavalmistuneiden kasvupolkuja.
Lue lisää ...

👉 Ilmainen PDF-lataus: Entity Frameworkin haastattelukysymykset ja vastaukset

Entity Frameworkin tärkeimmät haastattelukysymykset ja vastaukset

1) Mikä on Entity Framework ja mihin sitä käytetään?

Entiteettikehys (EF) on Microsoftn ORM (objekti-relaatiokartta)ping) .NET-kehys, joka yksinkertaistaa tietokannan vuorovaikutusta sallimalla kehittäjien käsitellä tietoja vahvasti tyypitettyinä .NET-objekteina raaka-SQL:n sijaanTämä vatsalihastraction mahdollistaa kehittäjille CRUD-toimintojen (Create, Read, Update, Delete) suorittamisen tutuilla C#-rakenteilla, ja kehys hoitaa näiden toimintojen muuntamisen optimoiduiksi SQL-kyselyiksi konepellin alla. EF vähentää vakiomuotoista tiedonsaantikoodia, parantaa ylläpidettävyyttä ja auttaa varmistamaan käännösaikaisen tyyppiturvallisuuden.

Esimerkiksi SQL-koodin kirjoittamisen sijaan voit käyttää:

var customers = context.Customers.Where(c => c.IsActive).ToList();

EF kääntää tämän LINQ-kyselyn SQL-muotoon, suorittaa sen tietokantaa vasten ja palauttaa tulokset objekteina.


2) Selitä ero Code Ensin, Database First ja Model First -lähestymistavat.

Entity Framework tukee kolmea pääasiallista kehitystapaa:

Lähestymistapa Milloin käyttää Mitä tapahtuu
Code Etunimi Uudet projektit tai toimialakohtainen suunnittelu Sinä määrittelet entiteettiluokat. EF luo tietokantakaavan koodista.
Tietokanta ensin Olemassa oleva tietokanta EF luo entiteettiluokat ja kontekstin olemassa olevasta skeemasta.
Malli ensin Kun pidät visuaalisesta suunnittelusta Suunnittelet mallin visuaalisessa suunnitteluohjelmassa (Entity Designer), ja EF luo sekä luokat että tietokannan.

Jokainen lähestymistapa palvelee erilaisia ​​​​skenaarioita: Code Etunimi on suosittu ketterässä kehityksessä, Tietokanta ensin on suositeltava perinteisten tietokantojen kanssa, ja Malli ensin sopii tilanteisiin, joissa visuaalinen mallinnus on tärkeää.


3) Mikä on DbContext ja mikä on sen rooli EF:ssä?

DbContext on ensisijainen luokka, joka hallinnoi istunto tietokannan kanssa, tracks-entiteettien muutokset ja koordinoi tietojen tallentamista takaisin tietokantaan. Se edustaa siltaa C#-sovelluksesi ja tietokannan välillä. DbContext, sinä määrittelet DbSet<TEntity> ominaisuudet, jotka edustavat entiteettien kokoelmia ja liittyvät tietokannan taulukoihin.

Esimerkiksi:

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }
}

Täällä Products toimii kokoelmana CRUD-operaatioiden suorittamiseksi. EF käyttää tätä kontekstia track objektitilaa ja luo SQL-komentoja SaveChanges().


4) Mitä ovat migraatiot Entity Frameworkissa ja miten niitä käytetään?

Migrations ovat mekanismi track ja hae skeemamuutokset tietokantaan ajan myötä. Mallisi kehittyessä migraatiot auttavat pitämään tietokannan synkronoituna ilman SQL-skriptien manuaalista muokkaamista. Code Ensin käytät komentoja, kuten:

Add-Migration InitialCreate
Update-Database

Tämä luo migraatioluokkia, jotka määrittelevät kaavamuutokset ja soveltavat niitä tietokantaan. Migraatiot mahdollistavat tietokantakaavan versionhallinnan ja helpottavat yhteistyöhön perustuvaa kehitystä.


5) Kuvaile laiska lastaus, innokas lastaus ja eksplisiittinen lastaus.

Tiedon tehokas lataaminen on kriittistä EF:ssä. Tässä on vertailu:

Strategia Kun se toimii Tyypillinen käyttö
laiska ladataan Ensimmäisellä käyttökerralla ladatut asiaankuuluvat tiedot Käytä, kun toisiinsa liittyviä tietoja ei aina tarvita.
Innokas lataus Aiheeseen liittyvät tiedot ladattu etukäteen kautta .Include() Käytä, kun tiedät tarvitsevasi asiaankuuluvaa dataa.
Nimenomainen lataus Ladattu manuaalisesti kyselyn jälkeen Antaa hallinnan siihen, milloin asiaankuuluvat tiedot ladataan tarkasti.

Esimerkiksi:

var orders = context.Orders.Include(o => o.Customer).ToList(); // Eager

Laiska lataus auttaa vähentämään alkukyselyitä, mutta voi aiheuttaa N+1 kyselyongelmia jos sitä ei käytetä huolellisesti.


6) Mitä on muutos trackuningas Entity Frameworkissa?

Muutos trackuningas on EF:n sisäinen mekanismi valvoa entiteetin tilan muutoksia kyselyn suorittamisen jälkeen. Kun kysely hakee entiteetin DbContext, se on tracKaikki sen ominaisuuksiin tehdyt muutokset kirjataan muistiin, ja kun SaveChanges() kutsutaan, EF luo sopivan SQL-lausekkeen INSERT, UPDATEtai DELETE lausekkeet. Vain luku -tilanteissa, joissa trackuningas on tarpeeton, AsNoTracking() parantaa suorituskykyä poistamalla muutokset käytöstä trackuningas.


7) Miten Entity Framework käsittelee samanaikaisuuskonflikteja?

Samanaikaisuuden hallinta varmistaa, että useat samaa dataa päivittävät käyttäjät eivät tahattomasti korvaa toistensa muutoksia. EF käyttää optimistinen samanaikaisuus oletuksena. Yleinen lähestymistapa on lisätä samanaikaisuustunnus (kuten RowVersion aikaleima). EF tarkistaa tämän tunnuksen aikana SaveChanges()ja jos se eroaa tietokannan versiosta, DbUpdateConcurrencyException heitetään, mikä osoittaa ristiriitaa. Kehittäjät voivat sitten käsitellä tämän poikkeuksen yrittääkseen uudelleen tai ratkaistakseen dataerot.


8) Mitä ovat EF-funktion navigointiominaisuudet?

Navigointiominaisuudet määrittävät entiteettien väliset suhteet. Ne mahdollistavat EF:n navigoi yhdistyksiä (esim. yksi-moneen) ilman manuaalisia liitoksia:

public class Order
{
    public int Id { get; set; }
    public Customer Customer { get; set; }
}

Täällä Customer on navigointiominaisuus, joka linkittää Order siihen liittyvään CustomerEF käyttää näitä ominaisuuksia suhteiden ja liitosten automaattiseen rakentamiseen kyselyiden aikana. Navigointiominaisuudet toimivat rinnakkain vieraat avaimet mallintaa ihmissuhteita.


9) Mikä on AsNon tarkoitus?Trackuningas()?

AsNoTracking() poistaa muutoksen käytöstä trackuningas kyselyyn, mikä on hyödyllistä vain luku toiminnot, joissa et aio päivittää noudettuja yksiköitä. Tämä parantaa suorituskykyä vähentämällä muistin käyttöä ja tracsuuri ylimääräinen kuormitus. Se on erityisen hyödyllinen noudettaessa suuria tietojoukkoja muokkaamatta niitä.


10) Mitä ovat käännetyt kyselyt ja milloin niitä tulisi käyttää?

Käännetyt kyselyt ovat suorituskyvyn optimointitekniikka. Kun LINQ-kysely suoritetaan, EF kääntää sen tyypillisesti SQL:ksi joka kerta. Käännetyissä kyselyissä tämä käännös tehdään kerran, ja tuloksena olevaa delegoitua käytetään uudelleen – tämä vähentää usein suoritettavien tai monimutkaisten kyselyiden yleiskuormitusta. Käytä niitä paljon liikennettä skenaarioita, joissa sama kysely suoritetaan toistuvasti eri parametreilla.


11) Mitä ovat entiteettitilat Entity Frameworkissa ja miten ne vaikuttavat SaveChanges()-funktioon?

Entiteettijärjestelmä tracks jokaisen yksikön olivat määrittää, mitä tietokantatoimintoa suoritetaan aikana SaveChanges()Tärkeimmät kokonaisuustilat ovat:

Osavaltio Tuotetiedot Operatoiminta laukaistiin
Lisätty Uusi lisättävä yksikkö INSERT
Muokattu Olemassa oleva yksikkö päivitetty UPDATE
Poistettu Yksikkö merkitty poistettavaksi DELETE
ennallaan Ei havaittuja muutoksia Ei eristetty
Erillinen Ei trackontekstin mukaan Ei eristetty

Kun soitat SaveChanges()EF tarkastaa entiteettien tilat ja suorittaa vastaavat SQL-komennot. Esimerkiksi uusi entiteetti lisätään DbSet merkitään Lisätty, mikä johtaa INSERT kysely.

Esimerkiksi:

context.Entry(product).State = EntityState.Modified;
context.SaveChanges();

Tämä päivittää nimenomaisesti yksikön tietokantatietueen.

Tilanteiden ymmärtäminen varmistaa paremman hallinnan datan synkronoinnin ja suorituskyvyn suhteen.


12) Mitkä ovat Entity Frameworkin käytön edut ja haitat?

Entity Framework tarjoaa vahvoja etuja, mutta myös joitakin kompromisseja käyttötapauksestasi riippuen.

edut Haitat
Yksinkertaistaa datan käyttöä LINQ:n ja objektimallien avulla. Suorituskyvyn lisäkustannukset verrattuna raakaan ADO.NETiin.
Vähentää vakiomuotoista SQL-koodia. Monimutkaiset kyselyt voivat tuottaa tehotonta SQL:ää.
Tukee useita tietokantapalveluntarjoajia. Luotujen SQL-lauseiden debugaus on vaikeampi.
Vahvasti tyypitetty, mikä parantaa käännösaikaista turvallisuutta. Muuttoliikkeeseen liittyvät konfliktit suurissa tiimeissä mahdollisia.
Mahdollistaa nopean prototyypinping Code First. Less hallita hienosäädettyjä kyselyitä.

Suurissa järjestelmissä, jotka vaativat maksimaalista suorituskykyä, kehittäjät voivat silti sekoittaa raaka SQL EF:llä optimointia varten.


13) Miten Entity Framework käsittelee suhteita (yksi-yhteen, yksi-moneen, monta-moneen)?

Entity Framework hallitsee suhteita seuraavien kautta: navigointiominaisuudet ja ulkomaisten avainten yhdistämiset.

Suhteiden tyypit ovat:

Suhteen tyyppi Tuotetiedot esimerkki
Yksi yhteen Jokaisella entiteetti-instanssilla on yksi siihen liittyvä entiteetti. UserUserProfile
Yksi moniin Yksi kokonaisuus on yhteydessä useisiin muihin. CustomerOrders
Monesta moneen Useat yksiköt ovat yhteydessä toisiinsa. StudentCourse

Esimerkki Yksi moniin suhde:

public class Customer
{
    public int CustomerId { get; set; }
    public ICollection<Order> Orders { get; set; }
}

EF luo automaattisesti viiteavaimet ja kahvat kaskadipoistosäännöt kokoonpanosta riippuen.

Voit myös käyttää Sujuva API tarkempaa suhdekarttaa vartenping.


14) Mitä eroa on LINQ to Entities- ja LINQ to SQL -muunnoksilla?

Ominaisuus LINQ entiteettiin LINQ SQL:ään
Tuetut tietokannat Useita (SQL Server, Oracle, MySQLJne) Vain SQL Server
Taustalla oleva viitekehys Entiteettijärjestelmä ADO.NET
Malli Käsitteellinen kokonaisuusmalli Vain tietokantataulukot
karttaping Monimutkainen karttaping (perintö, yhdistykset) Suora pöytäkarttaping
Tulevaisuuden tuki Aktiivisesti tuettu Poistettu

LINQ entiteettiin on osa Entity Frameworkia ja monipuolisempi, samalla kun LINQ SQL:ään rajoittuu SQL Serveriin ja yksinkertaisempiin käyttötapauksiin.

Siksi LINQ to Entities -sovellusta suositellaan yritystason kehitykseen.


15) Mitä eroa on ObjectContextin ja DbContextin välillä?

Ominaisuus Objektikonteksti Tietokannan konteksti
Puitteet Aiemmat EF-versiot Yksinkertaistettu API EF 4.1+:ssa
Monimutkaisuus Runsassanaisempi Kevyt ja helppokäyttöinen
Suorituskyky Hieman nopeampi, mutta vaikeampi käyttää Yksinkertaistettu ja minimaaliset kustannukset
Muutos Trackuningas Manuaalinen määritys vaaditaan automaattisesti trackuningas
Suositeltu käyttö Vanhoja järjestelmiä Nykyaikaiset EF / EF Core -projektit

DbContext sisäisesti kääritty ObjectContext mutta tarjoaa puhtaamman ja intuitiivisemman API:n. Useimpien nykyisten .NET-sovellusten tulisi käyttää DbContext.


16) Selitä entiteetin elinkaari Entity Frameworkissa.

Kokonaisuuden elinkaari kuvaa sen tilansiirtymät luomisesta pysyvyyteen:

  1. Luominen – Entiteetti luodaan muistiin instanssiksi (tila: Erillinen).
  2. liite – Lisätty kontekstiin kautta DbSet.Add() (osavaltio: Lisätty).
  3. muutos – Muutokset havaitaan automaattisesti (ilmoita: Muokattu).
  4. Sitkeys - SaveChanges() kutsutaan → SQL-komennot suoritetaan.
  5. poisto – Yksikkö merkitty Poistettu ja poistettu tietokannasta.

Tämän elinkaaren ymmärtäminen auttaa dataongelmien vianmäärityksessä ja EF-kontekstin hallinnan optimoinnissa.


17) Mihin Fluent API:a käytetään Entity Frameworkissa?

Sujuva API tarjoaa ohjelmallisen tavan määrittää mallisuhteita, rajoituksia ja karttaapings, usein käytetty OnModelCreating() menetelmäsi DbContext.

Se antaa tarkan hallinnan kokoonpanoille, jotka datamerkinnät ei voi ilmaista.

Esimerkiksi:

modelBuilder.Entity<Customer>()
    .HasMany(c => c.Orders)
    .WithOne(o => o.Customer)
    .HasForeignKey(o => o.CustomerId);

Fluent API on erityisen tehokas konfigurointiin yhdistelmäavaimet, monta-moneen-suhteetja kaskadisäännöt.


18) Mitä ovat data-annotaatiot Entity Frameworkissa?

Datamerkinnät ovat attribuutteja sovelletaan suoraan malliluokkiin tai ominaisuuksiin skeeman käyttäytymisen määrittämiseksi. Ne ovat yksinkertaisempia kuin Fluent API, mutta vähemmän joustavia.

Esimerkiksi:

public class Product
{
    [Key]
    public int ProductId { get; set; }

    [Required]
    [StringLength(50)]
    public string Name { get; set; }
}

Annotaatiot määrittelevät avaimet, merkkijonojen pituudet, pakolliset kentät ja suhteet. Edistyneissä tapauksissa kehittäjät yleensä yhdistävät Tietojen merkinnät ja Sujuva API.


19) Mitä eroa on tracked ja untracEF Coressa olevat entiteetit?

Tyyppi Tuotetiedot Käytä asiaa
Tracked-yksiköt Valvoo DbContext muutoksia varten. Päivitysten oletustoiminta.
Untracked-yksiköt Ei seurattu; haettu .AsNoTracking(). Ihanteellinen vain luku -toimintoihin.

TracKäytettyjen entiteettien käyttö kuluttaa enemmän muistia, mutta sallii EF:n havaita muutokset automaattisesti.

Untracked-entiteetit parantavat suorituskyky paljon luetuissa, vähän päivitetyissä tilanteissa.


20) Miten Entity Frameworkissa voidaan suorittaa raaka-SQL-kyselyitä?

Entity Framework mahdollistaa raaka-SQL-kyselyiden suorittamisen mukautetuille tai suorituskykykriittisille kyselyille.

var result = context.Products
    .FromSqlRaw("SELECT * FROM Products WHERE Price > 100")
    .ToList();

Muille kuin kyselykomennoille:

context.Database.ExecuteSqlRaw("DELETE FROM Products WHERE Discontinued = 1");

Käytä tätä ominaisuutta huolellisesti välttääksesi SQL-injektio ja säilyttää tietokannasta riippumattoman joustavuuden.


21) Mitä eroa on Entity Frameworkilla ja Entity Framework Corella?

Entity Framework (EF) ja Entity Framework Core (EF Core) eroavat toisistaan ​​arkkitehtuurin, ominaisuuksien ja alustojen välisen tuen suhteen.

Ominaisuus Entiteettikehys 6 (EF6) Entity Framework Core
foorumi Vain .NET Framework Eri alustojen välinen (.NET 5/6/7)
Archirakenne ObjectContext-ominaisuuden perusteella Kevyt ja modulaarinen
Suorituskyky Hitaampi joissakin kyselyissä Optimoitu kyselyiden luonti
LINQ-tuki Kypsä mutta rajoittunut Parannettu käännös ja asynkronisuus
Tietokannan tarjoajat SQL-palvelin, Oracle Useita (MySQL, PostgreSQL, SQLiteJne)
Ominaisuudet Kypsä (esim. laiska lastaus) Moderni (esim. varjo-ominaisuudet, globaalit suodattimet)

EF-ydin on moderni, aktiivisesti kehitetty versio ja suositeltu valinta uusille .NET-projekteille joustavuutensa ja suorituskykynsä ansiosta.


22) Miten transaktiot toimivat Entity Frameworkissa?

Entity Frameworkin transaktiot varmistavat tietojen eheys kun useiden toimintojen on onnistuttava tai epäonnistuttava samanaikaisesti. Oletusarvoisesti EF rivittää SaveChanges() transaktion sisällä. Manuaalista hallintaa varten:

using (var transaction = context.Database.BeginTransaction())
{
    try
    {
        context.Customers.Add(new Customer());
        context.SaveChanges();

        context.Orders.Add(new Order());
        context.SaveChanges();

        transaction.Commit();
    }
    catch
    {
        transaction.Rollback();
    }
}

Tämä varmistaa atomisuuden — jos jokin komento epäonnistuu, kaikki muutokset peruutetaan.

EF integroituu myös seuraaviin tarkoituksiin: System.Transactions hajautetun transaktion tukea varten.


23) Selitä TPH-, TPT- ja TPC-perintästrategiat Entity Frameworkissa.

Entity Framework tukee kolmea pääasiallista periytymiskarttaaping strategiat luokkahierarkioiden mallintamiseen.

Strategia Tuotetiedot esimerkki edut Haitat
TPH (taulukko hierarkian mukaan) Kaikki luokat jakavat yhden taulukon; erottelijasarake määrittää tyypin. Yleinen EF Coressa. Yksinkertaisia, nopeita kyselyitä. Pöytä voi olla suuri ja harva.
TPT (taulukko tyypin mukaan) Jokaisella alaluokalla on oma taulukkonsa. Jokainen johdettu luokka kuvaa itsensä erikseen. Normalisoitu kaava. Hitaammat liitokset suurissa hierarkioissa.
TPC (taulukko betoniluokittain) Jokaisella luokalla on oma taulukko, jossa on kaksoissarakkeet. Jokainen yksikkö kartoitettu erikseen. Korkean suorituskyvyn lukuominaisuudet. Tiedon redundanssi.

Useimmat kehittäjät suosivat TPH yksinkertaisuuden vuoksi, ellei normalisointi tai suorituskykyvaatimukset toisin määrää.


24) Miten suorituskyvyn viritys hoidetaan Entity Frameworkissa?

Entity Frameworkin suorituskyvyn optimointi:

  1. Käyttää AsNoTracking() vain luku -kyselyihin.
  2. Innokas kuorma vain välttämättömät asiaankuuluvat yksiköt, joilla on .Include().
  3. Vältä N+1-kyselyitä käyttämällä ennusteita tai Select().
  4. Käytä käännettyjä kyselyitä usein suoritettaviin toimintoihin.
  5. Useiden lisäysten/päivitysten eräajo AddRange() ja SaveChanges().
  6. Poista käytöstä automaattinen muutosten tunnistus irtotavarana toimitettaessa: context.Configuration.AutoDetectChangesEnabled = false;
  7. Käytä välimuistia ja sivutusta suurille tietojoukoille.

Hyvin viritetty EF-toteutus voi lähestyä ADO.NETin suorituskykyä säilyttäen samalla kehittäjän tuottavuuden.


25) Mikä on varjo-ominaisuus Entity Framework Coressa?

A varjo-omaisuus on olemassa EF-mallissa, mutta ei entiteettiluokassa. EF ylläpitää sitä muutosprosessissa. tracker ja tallennetaan tietokantaan.

Esimerkiksi:

modelBuilder.Entity<Order>()
    .Property<DateTime>("LastUpdated");

Tämä sallii EF:n tallentaa ylimääräisiä metatietoja (esim. aikaleimoja, auditointitietoja) muokkaamatta entiteettiluokkaa.

Voit käyttää varjon ominaisuuksia seuraavasti:

var value = context.Entry(order).Property("LastUpdated").CurrentValue;

Varjo-ominaisuudet sopivat erinomaisesti lokikirjaus- tai tarkastusskenaarioihin.


26) Mitä ovat EF Coren arvomuuntimet?

EF Coren arvomuuntimet mahdollistavat ominaisuusarvojen muuntamisen tietokannasta luettaessa tai siihen kirjoitettaessa.

Esimerkiksi enumin tallentaminen merkkijonona:

modelBuilder.Entity<Employee>()
    .Property(e => e.Status)
    .HasConversion(
        v => v.ToString(),
        v => (EmployeeStatus)Enum.Parse(typeof(EmployeeStatus), v));

Tämä parantaa mukautettujen tietotyyppien, kuten enum, booltai DateTimeOffset.

Arvomuuntimia käytetään myös mm. salaus, pakkaus tai peittäminen arkaluonteisista tiedoista.


27) Mitä ovat globaalit kyselysuodattimet ja miten ne toimivat?

Globaalit kyselysuodattimet mahdollistavat ehtojen automaattisen soveltamisen kaikkiin entiteetin kyselyihin.

Tämä on erityisen hyödyllistä pehmeät poistot or usean vuokrasopimuksen.

Esimerkiksi:

modelBuilder.Entity<Employee>()
    .HasQueryFilter(e => !e.IsDeleted);

Jokainen kysely, joka suoritetaan Employee jättää automaattisesti pois pehmeästi poistetut tietueet, ellei sitä ole erikseen korvattu.

Globaalit suodattimet parantavat ylläpidettävyyttä ja tietoturvaa.


28) Miten Entity Framework -koodia voi testata yksikkötesteillä?

EF-logiikan yksikkötestaukseen ilman oikean tietokannan käyttöä käytetään muistissa olevat tietokannat or ivallinen:

  • Vaihtoehto 1: InMemory-palveluntarjoaja
    var options = new DbContextOptionsBuilder<AppDbContext>()
        .UseInMemoryDatabase("TestDb")
        .Options;
    
  • Vaihtoehto 2: Mock DbContext
    Pilkata DbSet käyttämällä kirjastoja, kuten MOQ eristystä varten.

Yksikkötestien tulisi validoida:

  • Kyselyn oikeellisuus (LINQ:n kautta)
  • Tietojen johdonmukaisuus jälkeen SaveChanges()
  • Arkiston logiikka

EF Core InMemoryn avulla testaaminen varmistaa nopeuden ja välttää riippuvuuksia SQL Serveristä.


29) Selitä EF-tiedoston repository- ja yksikkötyömallit.

Nämä kaksi arkkitehtonista mallia auttavat abstract-tietojen käyttöoikeus ja ylläpitää transaktioiden johdonmukaisuutta.

Kuvio Tarkoitus Toteutusesimerkki
säilytyspaikka Kapseloi CRUD-toiminnot kullekin yksikölle. IRepository<T> käyttöliittymä kanssa Add(), GetAll(), Jne
Työyksikkö Koordinoi useita tietovarastoja tapahtuman sisällä. SaveChanges() toimii commit-rajana.

Esimerkiksi:

public class UnitOfWork : IUnitOfWork
{
    private readonly AppDbContext _context;
    public void Commit() => _context.SaveChanges();
}

Nämä mallit parantavat testattavuus, koodin uudelleenkäyttöja huolenaiheiden erottaminen toisistaan suurissa yrityssovelluksissa.


30) Mitä eroa on innokkaalla kuormituksella ja projektiokuormituksella?

Aspect Innokas lataus Projektiolataus
Tarkoitus Lataa asiaankuuluvat tiedot etukäteen Lataa vain tietyt kentät tai ominaisuudet
Menetelmä .Include() .Select()
esimerkki context.Orders.Include(o => o.Customer) context.Orders.Select(o => new { o.Id, o.Customer.Name })
Suorituskyky Noutaa kokonaisia ​​objekteja Noutaa minimaalisesti dataa
Käytä asiaa Kun käsittelyyn tarvitaan toisiinsa liittyviä entiteettejä Kun tarvitset tiettyä kevyttä dataa

Projektiokuormitus on suorituskyvyn optimointi joka vähentää muistin käyttöä valitsemalla vain tarvittavat sarakkeet.


31) Mitä ovat interceptorit Entity Framework Coressa?

EF Coren interseptorit mahdollistavat kehittäjille tietokannan toimintojen sieppaamisen ja muokkaamisen, kuten kyselyn suorittaminen, komennon luonti ja yhteyden avaaminen.

Ne toimivat väliohjelmistokomponentteina EF:n ja tietokannan tarjoajan välillä.

Esimerkiksi: Kaikkien suoritettujen SQL-komentojen lokikirjaus.

public class CommandInterceptor : DbCommandInterceptor
{
    public override void ReaderExecuting(
        DbCommand command,
        CommandEventData eventData,
        InterceptionResult<DbDataReader> result)
    {
        Console.WriteLine($"Executing SQL: {command.CommandText}");
        base.ReaderExecuting(command, eventData, result);
    }
}

Rekisteröit sen palveluun DbContextOptionsBuilder:

optionsBuilder.AddInterceptors(new CommandInterceptor());

Hyödyt:

  • Parannettu lokikirjaus
  • Tietoturva (kyselyn validointi)
  • Tilintarkastus ja suorituskyky trackuningas

32) Miten EF Core käsittelee asynkronisia toimintoja?

Entity Framework Core tukee täysin asynkroninen ohjelmointi menetelmillä, kuten SaveChangesAsync(), ToListAsync()ja FirstOrDefaultAsync().

Asynkroninen suoritus auttaa parantaa skaalautuvuutta verkkosovelluksissa vapauttamalla säikeitä odottaessaan I/O-sidottuja tietokantaoperaatioita.

Esimerkiksi:

var customers = await context.Customers
    .Where(c => c.IsActive)
    .ToListAsync();

Asynkroniset operaatiot ovat erityisen tehokkaita suuritehoisissa sovelluksissa. ASP.NET Core -API-rajapinnat ja mikropalvelut, mikä vähentää puheluiden estoa ja parantaa vasteaikoja.


33) Mitä on yhteyden vikasietoisuus Entity Framework Coressa?

Yhteyden vikasietoisuus auttaa sovellustasi toipua automaattisesti ohimenevistä tietokantavirheistä, kuten verkon keskeytykset tai SQL-aikakatkaisut.

Se voidaan konfiguroida seuraavasti:

optionsBuilder.UseSqlServer(
    connectionString,
    options => options.EnableRetryOnFailure(5, TimeSpan.FromSeconds(10), null)
);

Tässä EF yrittää epäonnistuneita toimintoja uudelleen jopa viisi kertaa viiveillä.

Tämä on erityisen hyödyllistä pilvipohjaiset ympäristöt pitää Azure SQL, jossa ohimenevät virheet ovat yleisiä.


34) Mitä ovat omistettujen entiteettien tyypit EF Coressa?

Omistetut yksiköt sallivat mallinnuksen arvoobjektit jotka riippuvat täysin toisen yksikön elinkaaresta.

Ne jakavat saman pöydän omistajansa kanssa, eivätkä ne voi olla olemassa itsenäisesti.

Esimerkiksi:

public class Address
{
    public string Street { get; set; }
    public string City { get; set; }
}
public class Customer
{
    public int Id { get; set; }
    public Address Address { get; set; }
}

kokoonpano:

modelBuilder.Entity<Customer>().OwnsOne(c => c.Address);

Käyttötapa:

Mallinnuskonseptit, kuten Osoite, Rahatai Mittaus joilla ei ole omaa identiteettiä.


35) Miten pehmeät poistot voidaan toteuttaa Entity Framework Coressa?

Pehmeät poistot merkitsevät tietueet poistetuiksi sen sijaan, että ne fyysisesti poistettaisiin.

Ne toteutetaan käyttämällä totuusarvoinen lippu ja globaalit kyselysuodattimet.

modelBuilder.Entity<Employee>()
    .HasQueryFilter(e => !e.IsDeleted);

Poisto-operaatiossa:

employee.IsDeleted = true;
context.Update(employee);
context.SaveChanges();

edut:

  • Historiallisten tietojen säilyttäminen
  • Helpompi toipuminen

Haitat:

  • Suuremmat tietokantataulukot
  • Vaatii huolellista suodatuslogiikkaa

36) Mikä on käännetty malli EF Coressa ja mihin sitä käytetään?

EF Core 6+ -tasolla kootut mallit mahdollistavat EF-mallin metatietojen esikääntämisen .NET-kokoonpanoksi, mikä vähentää käynnistysaikaa ja suorituksenaikaista ylimääräistä työtä.

Vaiheet:

  1. Suorita komento: dotnet ef dbcontext optimize
  2. EF luo esikäännetyn mallitiedoston, jonka sovellus latautuu nopeammin suorituksen aikana.

Hyöty: Vähentää alustusviivettä 30–40 %, erityisesti suurissa sovelluksissa, joissa on useita yksiköitä.

Käyttötapa: Suorituskykyiset mikropalvelut ja palvelimettomat ympäristöt.


37) Miten välimuistin voi toteuttaa Entity Frameworkissa?

Välimuisti auttaa vähentämään toistuvia tietokantakyselyitä. On olemassa kaksi päätasoa:

Tyyppi Tuotetiedot esimerkki
Ensimmäisen tason välimuisti Sisäänrakennettu, per DbContext esimerkki Automaattisesti hallittu
Toisen tason välimuisti Ulkoinen välimuisti jaettu kontekstien välillä Käytä kirjastoja, kuten EFCoreSecondLevelCacheInterceptor

Esimerkki toisen tason välimuistista:

services.AddEFSecondLevelCache(options =>
{
    options.UseMemoryCacheProvider().DisableLogging(false);
});

Tämä parantaa merkittävästi suorituskykyä paljon lukua vaativat sovellukset välttämällä päällekkäisiä tietokantaosumia.


38) Miten EF Core hallitsee samanaikaisuustokenia ja aikaleimoja?

Samanaikaisuustunnukset estävät ristiriitaisia ​​päivityksiä monen käyttäjän ympäristöissä.

Voit merkitä ominaisuuden samanaikaisuustunnukseksi käyttämällä [ConcurrencyCheck] or [Timestamp] määrite.

Esimerkiksi:

public class Product
{
    public int Id { get; set; }

    [Timestamp]
    public byte[] RowVersion { get; set; }
}

Kun päivitys tapahtuu, EF lisää tämän sarakkeen WHERE lauseke.

Jos arvot eivät täsmää, DbUpdateConcurrencyException heitetään — varmistaen optimistinen samanaikaisuuden hallinta.


39) Miten toteutat auditoinnin (luominen, muokkaaminen, poistaminen) trackuningas) EF Coressa?

Tilintarkastus tracks-metatiedot, kuten kuka loi, muokkasi tai poisti kirjaa.

Voit ohittaa SaveChanges():

public override int SaveChanges()
{
    var entries = ChangeTracker.Entries()
        .Where(e => e.Entity is IAuditable && 
                   (e.State == EntityState.Added || e.State == EntityState.Modified));

    foreach (var entry in entries)
    {
        var auditable = (IAuditable)entry.Entity;
        auditable.LastModified = DateTime.UtcNow;
    }

    return base.SaveChanges();
}

Liitäntä:

public interface IAuditable
{
    DateTime Created { get; set; }
    DateTime LastModified { get; set; }
}

Tämä menetelmä keskittää auditointilogiikan varmistaen johdonmukainen tiedonhallinta.


40) Mitkä ovat parhaat käytännöt Entity Frameworkin käyttöön yrityssovelluksissa?

Luokka Paras harjoitus Hyöty
Suorituskyky Käyttää AsNoTracking() ja ennusteet vain luku -kyselyille. Vähentää yleiskustannuksia.
Design Toteuta tietovarasto- ja työyksikkömallit. Parantaa ylläpidettävyyttä.
Turvallisuus Käytä parametrisoituja kyselyitä SQL-injektion välttämiseksi. Datan suojelu.
skaalautuvuus Käytä yhteyspoolia ja asynkronisia menetelmiä. Kestää suurta kuormitusta.
Migrations Käytä automatisoituja migraatioita versionhallinnan kanssa. Yksinkertaistaa skeemien hallintaa.
Konfigurointi Ulkoista yhteysmerkkijonot ja salaisuudet. Parempi ympäristön eristys.
Testaus Käytä InMemory-palveluntarjoajaa yksikkötestauksiin. Nopeammat testiajot.
Hakkuu Ota käyttöön EF-lokikirjaus suorituskykytietojen saamiseksi. Helpompi virheenkorjaus.

Nämä käytännöt varmistavat vankka, skaalautuva ja ylläpidettävä Entity Frameworkille rakennetut sovellukset.


41) Miten LINQ-kyselyitä voidaan optimoida paremman SQL-käännöksen saavuttamiseksi Entity Frameworkissa?

Entity Framework muuntaa LINQ-kyselyt automaattisesti SQL-muotoon, mutta tehottomat mallit voivat tuottaa hidasta tai redundanttia SQL:ää. LINQ:n optimointi varmistaa, että ORM luo tehokkaita tietokantakyselyitä.

Optimointitekniikat:

Käytä ennusteita:

  1. Valitse vain tarvittavat sarakkeet kokonaisten entiteettien sijaan.
  2. var customers = context.Customers
        .Select(c => new { c.Id, c.Name })
        .ToList();
    
  3. Vältä asiakaspuolen arviointia:
    Varmista aina, että suodatus toimii SQL:ssä, ei muistissa. EF Core varoittaa, kun arviointi on asiakaspuolella.
  4. Käyttää AsNoTracking() vain luku -tilassa olevaa dataa varten.
  5. var orders = context.Orders.AsNoTracking().ToList();
  6. Hyödynnä koottuja kyselyitä toistuville LINQ-toiminnoille.
  7. Vältä tarpeetonta .Include() puhelut — sisällytä asiaankuuluvat tiedot vain tarvittaessa.

Esimerkiksi:

Tehoton:

context.Customers.ToList().Where(c => c.IsActive);

Tehokas:

context.Customers.Where(c => c.IsActive).ToList();

42) Millä eri tavoilla lähtötietoja voidaan syöttää EF Coreen?

Tietojen siementäminen varmistaa, että tietokannassa on oletus- tai viitetiedot kun se on luotu.

Lähestymistapa 1: ModelBuilderin käyttö

modelBuilder.Entity<Role>().HasData(
    new Role { Id = 1, Name = "Admin" },
    new Role { Id = 2, Name = "User" }
);

Tämä lisää tiedot automaattisesti Update-Database.

Lähestymistapa 2: Mukautettu siemenmenetelmä

Suorita koodi manuaalisesti käynnistyksen yhteydessä:

context.Database.Migrate();
if (!context.Users.Any())
{
    context.Users.Add(new User { Name = "Admin" });
    context.SaveChanges();
}

Lähestymistapa 3: SQL-skriptit

Käytä raakaa SQL:ää siirroissa:

migrationBuilder.Sql("INSERT INTO Roles (Name) VALUES ('Admin')");

Suositus:
Käyttää HasData() staattista referenssidataa ja ohjelmallista siementämistä dynaamista käynnistysdataa varten.


43) Miten EF Core hallinnoi tietokantapalveluntarjoajia sisäisesti?

EF-ydin on tarjoajariippumaton, mikä tarkoittaa, että se voi kohdistaa useita tietokantamoneita erillisten tietokannan tarjoajien paketit.

Yleiset palveluntarjoajat:

Tarjoaja NuGet Paketti tietokanta
SQL Server Microsoft.EntityFrameworkCore.SqlServer MSSQL
SQLite Microsoft.EntityFrameworkCore.Sqlite Mobiili/pöytäkone
PostgreSQL Npgsql.EntityFrameworkCore.PostgreSQL PostgreSQL
MySQL Pomelo.EntityFrameworkCore.MySql MySQL
Cosmos DB Microsoft.EntityFrameworkCore.Cosmos NoSQL

Sisäisesti EF Core käyttää abstrackerrokset varten:

  • Kyselyn käännös
  • SQL-komennon luonti
  • Tietotyyppikarttaping

Jokainen tarjoaja toteuttaa omat luokkansa periytyen EF Coren perusabs-funktiosta.tractions (esim. RelationalDatabaseProvider, QuerySqlGenerator).


44) Mikä on ”jaettu kysely” ja milloin sitä tulisi käyttää?

Jaetut kyselyt estävät EF:n suorittamisen suuret, monimutkaiset liitokset suorittamalla useita SQL-kyselyitä yhden sijaan.

Esimerkiksi:

var customers = context.Customers
    .Include(c => c.Orders)
    .AsSplitQuery()
    .ToList();

Tämä suorittaa:

  1. Kysely 1 → Hanki asiakkaita
  2. Kysely 2 → Hae näihin asiakkaisiin liittyvät tilaukset

Hyödyt:

  • Estää suurten karteesisten tulojen muodostumisen.
  • Parantaa suorituskykyä suurten toisiinsa liittyvien tietojoukkojen kanssa.

Haittapuoli:

Useita edestakaisia ​​​​yhteyksiä tietokantaan.

Käyttää jaetut kyselyt kun ladataan innokkaasti suuria toisiinsa liittyviä tietoja, jotka voivat aiheuttaa muistiongelmia.


45) Kuinka voit tehokkaasti valvoa EF-funktioilla luotuja SQL-komentoja?

SQL-kyselyiden valvonta auttaa debugaamaan hitaita kyselyitä ja optimoimaan ORM-toimintaa.

SQL-lokikirjausmenetelmät:

  1. Konsolin lokitiedot
  2. optionsBuilder
        .UseSqlServer(conn)
        .LogTo(Console.WriteLine, LogLevel.Information);
    
  3. ILoggerFactory-integraatio
  4. var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
    optionsBuilder.UseLoggerFactory(loggerFactory);
    
  5. torjuntahävittäjää Toteuttaa DbCommandInterceptor komentojen ja ajoitusten sieppaamiseen.
  6. Profilointityökalut Käytä työkaluja, kuten:
    • MiniProfiler
    • SQL Server Profiler
    • EFCorePowerTools

Hakkuiden tulisi olla käytössä valikoivasti tuotannossa suorituskyvyn lisäkustannusten välttämiseksi.


46) Mitä eroa on muutoksellaTracker.DetectChanges() ja AutoDetectChangesEnabled?

Ominaisuus DetectChanges() AutoDetectChangesEnabled
Tyyppi Menetelmä Omaisuus
Tarkoitus Pakottaa EF:n skannaamaan tractunnistetut yksiköt ja muutosten havaitseminen Ottaa käyttöön/poistaa käytöstä automaattisen muutosten tunnistuksen
oletusarvo manuaalinen Totta
Käyttö Kehota nimenomaisesti suorituskyvyn optimointiin Poista käytöstä joukkopäivityksissä

Esimerkiksi:

context.ChangeTracker.AutoDetectChangesEnabled = false;
foreach (var item in list)
{
    context.Add(item);
}
context.SaveChanges();

Automaattisen tunnistuksen poistaminen käytöstä silmukoissa parantaa suorituskykyä jopa 40% irtotavarana toiminnoissa.


47) Miten temporaalisia taulukoita käytetään EF Coren kanssa?

Väliaikaiset taulukot (otettiin käyttöön SQL Server 2016:ssa) mahdollistavat track historialliset tiedot automaattisesti.

Vaiheet:

  1. Ota ajallinen tuki käyttöön siirrossa:
  2. builder.Entity<Employee>()
        .ToTable("Employees", b => b.IsTemporal());
    
  3. Kyselyn historiatiedot:
  4. var history = context.Employees
        .TemporalAsOf(DateTime.UtcNow.AddDays(-7))
        .ToList();
    

edut:

  • Sisäänrakennettu datahistoria trackuningas
  • Tarkastus ja noudattaminen
  • Ei manuaalisia laukaisimia tarvita

EF Core 6+ tukee täyttä ajallista kyselyä.


48) Miten EF Core tukee käännettyjä kyselyitä ja ennalta luotuja malleja yhdessä?

Käännetyt kyselyt ja käännetyt mallit ovat kaksi suorituskykyominaisuudet jotka täydentävät toisiaan.

Ominaisuus Tarkoitus
Käännetyt kyselyt Välimuistikyselyn käännöstulokset
Käännettyjä malleja Esikäännä mallin metatiedot

Esimerkki käännetystä kyselystä:

static readonly Func<AppDbContext, int, Customer> _getCustomerById =
    EF.CompileQuery((AppDbContext ctx, int id) =>
        ctx.Customers.FirstOrDefault(c => c.Id == id));

Käyttö:

var customer = _getCustomerById(context, 5);

Yhdessä: Käännettyjen mallien käynnistyskustannukset, kun taas käännetyt kyselyt vähentävät ajonaikaisen kyselyn lisäkustannukset - ihanteellinen usein tehdyt kyselyt.


49) Mitä yleisiä sudenkuoppia EF:n käytössä mikropalveluarkkitehtuurissa on?

Yleiset virheet:

  1. Jaettu tietokantakonteksti palveluiden välillä
    → Rikkoo mikropalveluiden eristämistä.
    → Jokaisella mikropalvelulla tulisi olla oma DbContext ja schema.
  2. Jutteleva viestintä (N+1 kyselyä)
    → Minimoi EF-kyselyt API-kutsua kohden.
  3. Liiallinen innokas lastaus
    → Lataa vain tarvittavat tiedot DTO:iden kautta.
  4. Keskitetyt muuttoliikkeet
    → Jokaisen palvelun tulisi hallita omia migraatioitaan itsenäisesti.
  5. Transaktiorajojen puute
    → Käytä hajautettuja tapahtumia (Lähtevät-malli), jos tarvitaan palveluiden välistä yhdenmukaisuutta.
  6. Tiukka kytkentä SQL-palveluntarjoajaan
    → Käytä repository abs -tiedostoatracsäilyttääkseen joustavuuden tietokannan valinnassa.

50) Miten riippuvuuksien injektointi integroituu DbContextin kanssa ASP.NET Coressa?

Entity Framework integroituu saumattomasti seuraaviin: ASP.NET Coren sisäänrakennettu riippuvuuksien injektointi (DI) järjestelmään.

Setup:

services.AddDbContext<AppDbContext>(options =>
    options.UseSqlServer(Configuration.GetConnectionString("Default")));

Sitten ruiskuta se ohjaimiin tai palveluihin:

public class CustomerService
{
    private readonly AppDbContext _context;
    public CustomerService(AppDbContext context)
    {
        _context = context;
    }
}

Elinajat:

Elinikäinen Tuotetiedot Suositellaan
ulottuvissa Yksi konteksti HTTP-pyyntöä kohden oletusarvo
ohimenevä Uusi instanssi joka kerta Taustatyöt
Singleton Jaettu maailmanlaajuisesti Vältä (ei säikeille sopiva)

DI:n käyttö varmistaa testattavuus, elinkaaren hallintaja resurssitehokkuutta verkon ja taustaprosessien välillä.


🔍 Tärkeimmät Entity Framework -haastattelukysymykset tosielämän skenaarioilla ja strategisilla vastauksilla

1) Mikä on Entity Framework ja miksi sitä käytetään yrityssovelluksissa?

Ehdokkaalta odotetaan: Haastattelija haluaa arvioida Entity Frameworkin perusymmärrystäsi ja sen arvoa tosielämän sovelluksissa.

Esimerkki vastauksesta: Entiteettikehys on objekti-relaatiokarttaping .NET-kehys, jonka avulla kehittäjät voivat työskennellä tietokantojen kanssa käyttämällä .NET-objekteja raaka-SQL:n sijaan. Sitä käytetään yrityssovelluksissa tuottavuuden parantamiseen, mallipohjaisen tiedonsaantikoodin vähentämiseen ja vastuualueiden selkeän eriyttämisen ylläpitämiseen.


2) Voitko selittää eron näiden välillä Code Ensin-, tietokanta ensin- ja malli ensin -lähestymistavat?

Ehdokkaalta odotetaan: Haastattelija haluaa arvioida tietämystäsi eri kehitystyönkuluista ja siitä, milloin kutakin niistä kannattaa käyttää.

Esimerkki vastauksesta: Code First aloittaa toimialueluokilla ja luo tietokannan koodista. Database First aloittaa olemassa olevasta tietokannasta ja luo entiteettiluokat. Model First käyttää visuaalista suunnittelijaa mallin määrittelemiseen ja luo sitten sekä koodin että tietokannan. Kukin lähestymistapa valitaan projektin vaatimusten ja olemassa olevan infrastruktuurin perusteella.


3) Miten Entity Framework käsittelee taulukoiden välisiä suhteita?

Ehdokkaalta odotetaan: Haastattelija tarkistaa, että ymmärrät datamallinnuksen ja relaatiokartan.ping.

Esimerkki vastauksesta: Entity Framework käsittelee suhteita navigointiominaisuuksien ja viiteavainten avulla. Se tukee yksi-yhteen-, yksi-moneen- ja monta-moneen-suhteita, jolloin kehittäjät voivat käydä läpi toisiinsa liittyviä tietoja käyttämällä objektiviittauksia liitosten sijaan.


4) Kuvaile tilannetta, jossa paransit tietokannan suorituskykyä Entity Frameworkin avulla.

Ehdokkaalta odotetaan: Haastattelija haluaa kuulla käytännön esimerkin optimointitaitojen havainnollistamisesta.

Esimerkki vastauksesta: Edellisessä roolissani paransin suorituskykyä vähentämällä tarpeetonta nopeaa lataamista ja toteuttamalla projektiokyselyitä Select-lausekkeilla. Tämä minimoi tietokannasta noudettavan datan määrän ja lyhensi merkittävästi kyselyiden suoritusaikaa.


5) Miten migraatioita hallitaan Entity Frameworkissa?

Ehdokkaalta odotetaan: Haastattelija arvioi kokemuksiasi skeemamuutoksista ja versionhallinnasta.

Esimerkki vastauksesta: Migraatioita hallitaan sisäänrakennetuilla migraatiotyökaluilla, jotka track-malli muuttuu ajan myötä. Edellisessä työssäni loin ja tarkistin säännöllisesti migraatioskriptejä ennen niiden käyttöönottoa varmistaakseni tietokannan eheyden eri ympäristöissä.


6) Mitä on laiska lataus, ja milloin vältät sen käyttöä?

Ehdokkaalta odotetaan: Haastattelija haluaa testata ymmärrystäsi datan latausstrategioista ja suorituskyvyn kompromisseista.

Esimerkki vastauksesta: Laiska lataus lataa automaattisesti asiaankuuluvat tiedot, kun niitä käytetään. Vältän sen käyttöä suorituskykykriittisissä tilanteissa tai API-rajapinnoissa, koska se voi aiheuttaa useita tahattomia tietokantakutsuja, mikä johtaa N+1-kyselyongelmaan.


7) Miten käsittelet tapahtumia Entity Frameworkissa?

Ehdokkaalta odotetaan: Haastattelija arvioi tietämystäsi datan johdonmukaisuudesta ja virheiden käsittelystä.

Esimerkki vastauksesta: Entity Framework tukee tapahtumia DbContextin ja TransactionScopen kautta. Edellisessä työssäni käytin eksplisiittisiä tapahtumia varmistaakseni, että useat toisiinsa liittyvät tietokantaoperaatiot joko suoritettiin onnistuneesti yhdessä tai peruutettiin epäonnistumisen sattuessa.


8) Selitä, miten riippuvuusinjektiota käytetään Entity Frameworkin kanssa.

Ehdokkaalta odotetaan: Haastattelija haluaa nähdä, kuinka hyvin ymmärrät modernia sovellusarkkitehtuuria.

Esimerkki vastauksesta: Riippuvuusinjektiota käytetään DbContextin injektoimiseen palveluihin tai ohjaimiin. Tämä parantaa testattavuutta ja ylläpidettävyyttä mahdollistamalla kontekstin pilkkauksen tai korvaamisen ilman, että liiketoimintalogiikka muuttuu.


9) Kuvaile haastavaa Entity Frameworkin bugia ja miten ratkaisit sen.

Ehdokkaalta odotetaan: Haastattelija etsii ongelmanratkaisukykyä ja virheenkorjaustaitoja.

Esimerkki vastauksesta: Edellisessä roolissani kohtasin ongelman, jossa tracIrrallisia entiteettejä päivitettäessä voi syntyä ristiriitoja. Ratkaisin ongelman määrittämällä entiteetin tilat erikseen ja varmistamalla, että jokaisesta entiteetistä on vain yksi esiintymä. trackontekstin mukaan.


10) Miten päätät, milloin Entity Framework ei ole oikea työkalu?

Ehdokkaalta odotetaan: Haastattelija haluaa ymmärtää harkintakykysi ja kykysi valita sopivat teknologiat.

Esimerkki vastauksesta: Harkitsen vaihtoehtoja silloin, kun sovellukset vaativat erittäin tehokasta datan käyttöä tai monimutkaista tallennettujen proseduurien logiikkaa. Tällaisissa tapauksissa mikro-ORM:n tai raa'an ADO.NET:in käyttö voi tarjota enemmän hallintaa ja tehokkuutta.

Tiivistä tämä viesti seuraavasti: