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

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. | User ↔ UserProfile |
| Yksi moniin | Yksi kokonaisuus on yhteydessä useisiin muihin. | Customer → Orders |
| Monesta moneen | Useat yksiköt ovat yhteydessä toisiinsa. | Student ↔ Course |
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:
- Luominen – Entiteetti luodaan muistiin instanssiksi (tila: Erillinen).
- liite – Lisätty kontekstiin kautta
DbSet.Add()(osavaltio: Lisätty). - muutos – Muutokset havaitaan automaattisesti (ilmoita: Muokattu).
- Sitkeys -
SaveChanges()kutsutaan → SQL-komennot suoritetaan. - 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:
- Käyttää
AsNoTracking()vain luku -kyselyihin. - Innokas kuorma vain välttämättömät asiaankuuluvat yksiköt, joilla on
.Include(). - Vältä N+1-kyselyitä käyttämällä ennusteita tai
Select(). - Käytä käännettyjä kyselyitä usein suoritettaviin toimintoihin.
- Useiden lisäysten/päivitysten eräajo
AddRange()jaSaveChanges(). - Poista käytöstä automaattinen muutosten tunnistus irtotavarana toimitettaessa:
context.Configuration.AutoDetectChangesEnabled = false; - 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
PilkataDbSetkä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:
- Suorita komento:
dotnet ef dbcontext optimize - 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:
- Valitse vain tarvittavat sarakkeet kokonaisten entiteettien sijaan.
- Vältä asiakaspuolen arviointia:
Varmista aina, että suodatus toimii SQL:ssä, ei muistissa. EF Core varoittaa, kun arviointi on asiakaspuolella. - Käyttää
AsNoTracking()vain luku -tilassa olevaa dataa varten. - Hyödynnä koottuja kyselyitä toistuville LINQ-toiminnoille.
- Vältä tarpeetonta
.Include()puhelut — sisällytä asiaankuuluvat tiedot vain tarvittaessa.
var customers = context.Customers
.Select(c => new { c.Id, c.Name })
.ToList();
var orders = context.Orders.AsNoTracking().ToList();
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:
- Kysely 1 → Hanki asiakkaita
- 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:
- Konsolin lokitiedot
- ILoggerFactory-integraatio
- torjuntahävittäjää Toteuttaa
DbCommandInterceptorkomentojen ja ajoitusten sieppaamiseen. - Profilointityökalut Käytä työkaluja, kuten:
- MiniProfiler
- SQL Server Profiler
- EFCorePowerTools
optionsBuilder
.UseSqlServer(conn)
.LogTo(Console.WriteLine, LogLevel.Information);
var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole()); optionsBuilder.UseLoggerFactory(loggerFactory);
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:
- Ota ajallinen tuki käyttöön siirrossa:
- Kyselyn historiatiedot:
builder.Entity<Employee>()
.ToTable("Employees", b => b.IsTemporal());
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:
- Jaettu tietokantakonteksti palveluiden välillä
→ Rikkoo mikropalveluiden eristämistä.
→ Jokaisella mikropalvelulla tulisi olla oma DbContext ja schema. - Jutteleva viestintä (N+1 kyselyä)
→ Minimoi EF-kyselyt API-kutsua kohden. - Liiallinen innokas lastaus
→ Lataa vain tarvittavat tiedot DTO:iden kautta. - Keskitetyt muuttoliikkeet
→ Jokaisen palvelun tulisi hallita omia migraatioitaan itsenäisesti. - Transaktiorajojen puute
→ Käytä hajautettuja tapahtumia (Lähtevät-malli), jos tarvitaan palveluiden välistä yhdenmukaisuutta. - 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.
