From 1657510d1a6fae35fe9d45610ae18bb09b13e418 Mon Sep 17 00:00:00 2001 From: Giovani Date: Wed, 1 May 2019 10:13:05 -0500 Subject: [PATCH] Added lazy loading and fixed private properties not deserializing --- BrightGlimmer.Api/BrightGlimmer.Api.csproj | 6 ++---- BrightGlimmer.Api/Startup.cs | 18 +++++++++--------- BrightGlimmer.Data/BrightGlimmer.Data.csproj | 1 + .../Repositories/StudentQueryRepository.cs | 7 ++++--- BrightGlimmer.Data/bright_glimmer.db | Bin 73728 -> 73728 bytes BrightGlimmer.Domain/Address.cs | 2 +- BrightGlimmer.Domain/AssignedCourse.cs | 6 +++--- BrightGlimmer.Domain/Course.cs | 2 +- BrightGlimmer.Domain/Phone.cs | 2 +- BrightGlimmer.Domain/Student.cs | 11 ++++++----- 10 files changed, 28 insertions(+), 27 deletions(-) diff --git a/BrightGlimmer.Api/BrightGlimmer.Api.csproj b/BrightGlimmer.Api/BrightGlimmer.Api.csproj index 40c5f3e..6c7fa93 100644 --- a/BrightGlimmer.Api/BrightGlimmer.Api.csproj +++ b/BrightGlimmer.Api/BrightGlimmer.Api.csproj @@ -9,15 +9,13 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - + + diff --git a/BrightGlimmer.Api/Startup.cs b/BrightGlimmer.Api/Startup.cs index 16ea2aa..4420952 100644 --- a/BrightGlimmer.Api/Startup.cs +++ b/BrightGlimmer.Api/Startup.cs @@ -2,6 +2,7 @@ using BrightGlimmer.Data.Interfaces; using BrightGlimmer.Data.Repositories; using BrightGlimmer.Domain; +using JsonNet.PrivateSettersContractResolvers; using MediatR; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; @@ -28,7 +29,7 @@ namespace BrightGlimmer.Api .SetCompatibilityVersion(CompatibilityVersion.Version_2_1) .AddJsonOptions(options => { - options.SerializerSettings.ContractResolver = new PrivateSetterContractResolver() + options.SerializerSettings.ContractResolver = new PrivateSetterContractResolver(); }); services.AddMediatR(); @@ -37,9 +38,8 @@ namespace BrightGlimmer.Api services.AddTransient(typeof(IQueryRepository<>), typeof(QueryRepository<>)); services.AddTransient(typeof(ICommandRepository<>), typeof(CommandRepository<>)); - services.AddTransient(typeof(IQueryRepository), typeof(StudentQueryRepository)); - - services.AddDbContext(options => options.UseSqlite(Configuration.GetConnectionString("DefaultConnection"))); + services.AddDbContext(options => options.UseLazyLoadingProxies() + .UseSqlite(Configuration.GetConnectionString("DefaultConnection"))); services.AddTransient(); } @@ -59,11 +59,11 @@ namespace BrightGlimmer.Api app.UseMvc(); // Makes sure that the database is in fact created - //using (var serviceScope = app.ApplicationServices.GetService().CreateScope()) - //{ - // var context = serviceScope.ServiceProvider.GetRequiredService(); - // context.Database.EnsureCreated(); - //} + using (var serviceScope = app.ApplicationServices.GetService().CreateScope()) + { + var context = serviceScope.ServiceProvider.GetRequiredService(); + context.Database.EnsureCreated(); + } } } } \ No newline at end of file diff --git a/BrightGlimmer.Data/BrightGlimmer.Data.csproj b/BrightGlimmer.Data/BrightGlimmer.Data.csproj index d3f0c41..bbf2d69 100644 --- a/BrightGlimmer.Data/BrightGlimmer.Data.csproj +++ b/BrightGlimmer.Data/BrightGlimmer.Data.csproj @@ -7,6 +7,7 @@ + diff --git a/BrightGlimmer.Data/Repositories/StudentQueryRepository.cs b/BrightGlimmer.Data/Repositories/StudentQueryRepository.cs index 88cf9b0..eacca84 100644 --- a/BrightGlimmer.Data/Repositories/StudentQueryRepository.cs +++ b/BrightGlimmer.Data/Repositories/StudentQueryRepository.cs @@ -10,6 +10,7 @@ using System.Threading.Tasks; namespace BrightGlimmer.Data.Repositories { + /* TODO: REMOVE MAYBE? */ public class StudentQueryRepository : QueryRepository { public StudentQueryRepository(BgContext context) : base(context) { } @@ -34,9 +35,9 @@ namespace BrightGlimmer.Data.Repositories public override async Task GetAsync(Guid id) { return await context.Students - .Include(x => x.Phones) - .Include(x => x.Address) - .Include(x => x.AssignedCourses) + //.Include(x => x.Phones) + //.Include(x => x.Address) + //.Include(x => x.AssignedCourses) .SingleAsync(x => x.Id == id); } } diff --git a/BrightGlimmer.Data/bright_glimmer.db b/BrightGlimmer.Data/bright_glimmer.db index 26a327e722ae0e0557f5e5d564075bd1d57884dd..86b149f3426b7501c7424c5f1560a7fd64fde9cf 100644 GIT binary patch delta 204 zcmZoTz|wGlWr8##>qHr6M%Il9%k)`182CLl3kq2C3+~h5Xf$Qy)!}eiY1poy=3Q!~!obyZbN-B*(VDm3~ z9s`zK2L9a5f(0r3JOYe7AnRDPMddXoH`WJBz)bWh%`6VePbtbwFHNmVFUsHiw0^fe SBj@CW`@I;SZ+^31Bmn?V`9gyL delta 150 zcmZoTz|wGlWr8##^F$eEM&^wP%k)`F8Td;#3kqcO^EGlX^6GFnJ8R1-3aTA^ r-gt6VeXw9qeo9ehdTDA^dJ%-R`Dy)bdq$4Q3-^05R&0K=UnBtlQ->~m diff --git a/BrightGlimmer.Domain/Address.cs b/BrightGlimmer.Domain/Address.cs index 927fa31..cd1098c 100644 --- a/BrightGlimmer.Domain/Address.cs +++ b/BrightGlimmer.Domain/Address.cs @@ -20,7 +20,7 @@ namespace BrightGlimmer.Domain [JsonIgnore] public decimal Longitude { get; private set; } - private Address() { } + protected Address() { } public Address(string streetAddress1, string streetAddress2, diff --git a/BrightGlimmer.Domain/AssignedCourse.cs b/BrightGlimmer.Domain/AssignedCourse.cs index e5ea3a1..7aec573 100644 --- a/BrightGlimmer.Domain/AssignedCourse.cs +++ b/BrightGlimmer.Domain/AssignedCourse.cs @@ -12,10 +12,10 @@ namespace BrightGlimmer.Domain public bool IsActive { get; set; } public string Term { get; set; } - public Student Student { get; private set; } - public Course Course { get; private set; } + public virtual Student Student { get; private set; } + public virtual Course Course { get; private set; } - private AssignedCourse() { } + protected AssignedCourse() { } public AssignedCourse(bool isActive, string term) { diff --git a/BrightGlimmer.Domain/Course.cs b/BrightGlimmer.Domain/Course.cs index 0201cb2..05fc513 100644 --- a/BrightGlimmer.Domain/Course.cs +++ b/BrightGlimmer.Domain/Course.cs @@ -12,7 +12,7 @@ namespace BrightGlimmer.Domain public string Description { get; set; } public string Code { get; set; } - private Course() { } + protected Course() { } public Course(string name, string description, string code) { diff --git a/BrightGlimmer.Domain/Phone.cs b/BrightGlimmer.Domain/Phone.cs index 1401132..3fda723 100644 --- a/BrightGlimmer.Domain/Phone.cs +++ b/BrightGlimmer.Domain/Phone.cs @@ -16,7 +16,7 @@ namespace BrightGlimmer.Domain [JsonProperty] public int Number { get; private set; } - private Phone() { } + protected Phone() { } public Phone(PhoneType type, int areaCode, int number) { diff --git a/BrightGlimmer.Domain/Student.cs b/BrightGlimmer.Domain/Student.cs index 5db02bf..280d377 100644 --- a/BrightGlimmer.Domain/Student.cs +++ b/BrightGlimmer.Domain/Student.cs @@ -1,4 +1,5 @@ -using System; +using Newtonsoft.Json; +using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; @@ -17,16 +18,16 @@ namespace BrightGlimmer.Domain public string MiddleName { get; set; } public string LastName { get; set; } public string Email { get; set; } - public Address Address { get; private set; } + public virtual Address Address { get; private set; } public string ProfilePictureUrl { get; set; } private readonly List phones = new List(); - public IReadOnlyList Phones => phones; + public virtual IReadOnlyList Phones => phones; private readonly List assignedCourses = new List(); - public IReadOnlyList AssignedCourses => assignedCourses; + public virtual IReadOnlyList AssignedCourses => assignedCourses; - private Student() { } + protected Student() { } public Student(string firstName, string lastName,