Entitiy Framework kun hent første række fra en 1 til mange relation
Hej EksperterJeg bruger Entity Framework til og køre min side.
Jeg har et artikel system, som deles op i artikel fragmenter, som henter sit inhold fra en artikelfragmentversion.
relationerne ser omkring sådan her ud.
Artikel.Id = 1
ArtikelFragment.Id = 1
ArtikelFragment.ArtikelId = Mange
ArtikelFragmentVersion.Id = 1
ArtikelFragmentVersion.ArtikelFragmentId = Mange
Artikel Indeholder data der tracker selve artiklen, men ikke rigtigt noget Text, da det først bliver styret af ArtikelFragmentVersion
ArtikelFragment er en form for statisk holdeplads for et specifikt ArtikelFragmentVersion, som der kan være utroligt mange af.
f.eks kan ArtikelFragmentVersion have et andet sprog, men kan også være en editeret og bedre version end den forrige på samme sprog.
min bekymring er at når jeg siger at EF skal loade denne struktur, at EF så vil laode alle Versioner af min Artikel, og dermed bruge mere CPU tid end nødvendigt.
hvordan vil EF behandle denne sage, hvis jeg f.eks gøre følgende.
public void OnGet(int id)
{
Article article = Context.Articles.Find(id);
foreach (ArticleFragment af in article.ArticleFragments)
{
ArticleFragmentVersion afv = af.FragmentVersions.Where(v => v.Language == Language).OrderBy(o => o.Score).FirstOrDefault();
// Brug ArticleFragmentVersion her
}
}
min DbContext er følgende
public class ArticleDbContext : DbContext
{
public DbSet<Article> Articles { get; set; }
public ArticleDbContext(DbContextOptions<ArticleDbContext> options) : base(options)
{
}
protected override void OnModelCreating(ModelBuilder builder)
{
base.OnModelCreating(builder);
}
}
er der en måde og optimere dette på, så den ikke skal kigge alle DB rækker igennem for dette?