Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Kan hende du kom over noe lignende i fjor.
- Gitt at du har en klasse som refererer til en annen klasse, eksempelvis slik:
- public class BlogPost
- {
- public int BlogPostID { get; set; }
- public string Title { get, set; }
- public string Content { get; set; }
- // Her henviser en BlogPost til en annen klasse
- public ApplicationUser Author { get; set; }
- }
- Dersom man skal ha en Edit action i kontroller gjør man noe lignende:
- Antar at vi har en:
- private readonly ApplicationDbContext _context;
- public async Task<IActionResult> Edit(int id, [Bind("BlogPostID, Title, Content") BlogPost post)
- {
- // Forfatteren lastes ikke inn automatisk så vi kan gjøre:
- var author = _context.BlogPosts
- .Include(blogPost => blogPost.Author
- .AsNoTracking()
- .FirstOrDefaultAsync(entry => entry.BlogPostId == id)
- .Result
- .Author;
- // .NET Lar oss ikke hente ut forfatter uten å spesifisere AsNoTracking, siden begge postene har samme Primary Key
- // Derfor må vi merke den som AsNoTracking(). Er det noen måte å slippe å gjøre dette på, altså at argumentet til
- // funksjonen automatisk laster inn relaterte data på egenhånd?
- // Det gjør det forvirrende hvis man skal abstracte til en service klasse og må ha to funksjoner som gjør det samme:
- _blogPostService.LoadBlogPostAsync(id);
- _blogPostService.LoadBlogPostAsNonTrackingAsync(id);
- if(author.Id != User.Id)
- {
- // Prevent user from editing blog post
- }
- }
Add Comment
Please, Sign In to add comment