diff options
| author | transtrike <transtrike@gmail.com> | 2021-02-19 18:28:16 +0200 |
|---|---|---|
| committer | transtrike <transtrike@gmail.com> | 2021-02-19 18:28:16 +0200 |
| commit | 3410581312b1f1eb8607b8ca534cf4d8f1471d96 (patch) | |
| tree | 6a3d3e73525f4ff18e1159b441366259f8bf831b /src | |
| parent | 02cf7a097c781cd0ef9e844078e873fcda5a3fcd (diff) | |
| download | DevHive-lazy_loading.tar DevHive-lazy_loading.tar.gz DevHive-lazy_loading.zip | |
Lazy loading craching VS Code on debug sessionlazy_loading
Diffstat (limited to 'src')
| -rw-r--r-- | src/Data/DevHive.Data.Models/Comment.cs | 4 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Language.cs | 2 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Post.cs | 8 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/ProfilePicture.cs | 3 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Rating.cs | 2 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs | 2 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/RelationalModels/RatedPost.cs | 4 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/RelationalModels/UserRate.cs | 4 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Role.cs | 2 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/Technology.cs | 2 | ||||
| -rw-r--r-- | src/Data/DevHive.Data.Models/User.cs | 16 | ||||
| -rw-r--r-- | src/Data/DevHive.Data/Repositories/UserRepository.cs | 28 | ||||
| -rw-r--r-- | src/Web/DevHive.Web/Configurations/Extensions/ConfigureDatabase.cs | 3 | ||||
| -rw-r--r-- | src/Web/DevHive.Web/DevHive.Web.csproj | 1 |
14 files changed, 44 insertions, 37 deletions
diff --git a/src/Data/DevHive.Data.Models/Comment.cs b/src/Data/DevHive.Data.Models/Comment.cs index f907e43..8c42b75 100644 --- a/src/Data/DevHive.Data.Models/Comment.cs +++ b/src/Data/DevHive.Data.Models/Comment.cs @@ -9,11 +9,11 @@ namespace DevHive.Data.Models // public Guid PostId { get; set; } - public Post Post { get; set; } + public virtual Post Post { get; set; } // public Guid CreatorId { get; set; } - public User Creator { get; set; } + public virtual User Creator { get; set; } public string Message { get; set; } diff --git a/src/Data/DevHive.Data.Models/Language.cs b/src/Data/DevHive.Data.Models/Language.cs index fdcfb07..c1df5be 100644 --- a/src/Data/DevHive.Data.Models/Language.cs +++ b/src/Data/DevHive.Data.Models/Language.cs @@ -10,6 +10,6 @@ namespace DevHive.Data.Models public string Name { get; set; } - public HashSet<User> Users { get; set; } = new(); + public virtual HashSet<User> Users { get; set; } = new(); } } diff --git a/src/Data/DevHive.Data.Models/Post.cs b/src/Data/DevHive.Data.Models/Post.cs index 15b6b77..5b0faad 100644 --- a/src/Data/DevHive.Data.Models/Post.cs +++ b/src/Data/DevHive.Data.Models/Post.cs @@ -11,16 +11,16 @@ namespace DevHive.Data.Models { public Guid Id { get; set; } - public User Creator { get; set; } + public virtual User Creator { get; set; } public string Message { get; set; } public DateTime TimeCreated { get; set; } - public List<Comment> Comments { get; set; } = new(); + public virtual List<Comment> Comments { get; set; } = new(); - public Rating Rating { get; set; } = new(); + public virtual Rating Rating { get; set; } = new(); - public List<PostAttachments> Attachments { get; set; } = new(); + public virtual List<PostAttachments> Attachments { get; set; } = new(); } } diff --git a/src/Data/DevHive.Data.Models/ProfilePicture.cs b/src/Data/DevHive.Data.Models/ProfilePicture.cs index c502654..596591e 100644 --- a/src/Data/DevHive.Data.Models/ProfilePicture.cs +++ b/src/Data/DevHive.Data.Models/ProfilePicture.cs @@ -8,7 +8,8 @@ namespace DevHive.Data.Models public Guid Id { get; set; } public Guid UserId { get; set; } - public User User { get; set; } + + public virtual User User { get; set; } public string PictureURL { get; set; } } diff --git a/src/Data/DevHive.Data.Models/Rating.cs b/src/Data/DevHive.Data.Models/Rating.cs index 13fdbce..10bed36 100644 --- a/src/Data/DevHive.Data.Models/Rating.cs +++ b/src/Data/DevHive.Data.Models/Rating.cs @@ -10,7 +10,7 @@ namespace DevHive.Data.Models public Guid PostId { get; set; } - public Post Post { get; set; } + public virtual Post Post { get; set; } public int Rate { get; set; } } diff --git a/src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs b/src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs index 8c814fc..40ce861 100644 --- a/src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs +++ b/src/Data/DevHive.Data.Models/RelationalModels/PostAttachments.cs @@ -9,7 +9,7 @@ namespace DevHive.Data.Models.Relational { public Guid Id { get; set; } - public Post Post { get; set; } + public virtual Post Post { get; set; } public string FileUrl { get; set; } } diff --git a/src/Data/DevHive.Data.Models/RelationalModels/RatedPost.cs b/src/Data/DevHive.Data.Models/RelationalModels/RatedPost.cs index fb63848..2a72c6f 100644 --- a/src/Data/DevHive.Data.Models/RelationalModels/RatedPost.cs +++ b/src/Data/DevHive.Data.Models/RelationalModels/RatedPost.cs @@ -10,9 +10,9 @@ namespace DevHive.Data.Models.Relational public class RatedPost { public Guid UserId { get; set; } - public User User { get; set; } + public virtual User User { get; set; } public Guid PostId { get; set; } - public Post Post { get; set; } + public virtual Post Post { get; set; } } } diff --git a/src/Data/DevHive.Data.Models/RelationalModels/UserRate.cs b/src/Data/DevHive.Data.Models/RelationalModels/UserRate.cs index 46bd605..8e82d29 100644 --- a/src/Data/DevHive.Data.Models/RelationalModels/UserRate.cs +++ b/src/Data/DevHive.Data.Models/RelationalModels/UserRate.cs @@ -9,10 +9,10 @@ namespace DevHive.Data.Models.Relational { public Guid Id { get; set; } - public User User { get; set; } + public virtual User User { get; set; } public bool Liked { get; set; } - public Post Post { get; set; } + public virtual Post Post { get; set; } } } diff --git a/src/Data/DevHive.Data.Models/Role.cs b/src/Data/DevHive.Data.Models/Role.cs index 0df556c..55fc9fc 100644 --- a/src/Data/DevHive.Data.Models/Role.cs +++ b/src/Data/DevHive.Data.Models/Role.cs @@ -12,6 +12,6 @@ namespace DevHive.Data.Models public const string DefaultRole = "User"; public const string AdminRole = "Admin"; - public HashSet<User> Users { get; set; } = new(); + public virtual HashSet<User> Users { get; set; } = new(); } } diff --git a/src/Data/DevHive.Data.Models/Technology.cs b/src/Data/DevHive.Data.Models/Technology.cs index 9354d5b..17b60dd 100644 --- a/src/Data/DevHive.Data.Models/Technology.cs +++ b/src/Data/DevHive.Data.Models/Technology.cs @@ -10,6 +10,6 @@ namespace DevHive.Data.Models public string Name { get; set; } - public HashSet<User> Users { get; set; } = new(); + public virtual HashSet<User> Users { get; set; } = new(); } } diff --git a/src/Data/DevHive.Data.Models/User.cs b/src/Data/DevHive.Data.Models/User.cs index bac5425..1c61eba 100644 --- a/src/Data/DevHive.Data.Models/User.cs +++ b/src/Data/DevHive.Data.Models/User.cs @@ -14,20 +14,20 @@ namespace DevHive.Data.Models public string LastName { get; set; } - public ProfilePicture ProfilePicture { get; set; } = new() { PictureURL = "/assets/images/feed/profile-pic.png" }; + public virtual ProfilePicture ProfilePicture { get; set; } = new() { PictureURL = "/assets/images/feed/profile-pic.png" }; - public HashSet<Language> Languages { get; set; } = new(); + public virtual HashSet<Language> Languages { get; set; } = new(); - public HashSet<Technology> Technologies { get; set; } = new(); + public virtual HashSet<Technology> Technologies { get; set; } = new(); - public HashSet<Role> Roles { get; set; } = new(); + public virtual HashSet<Role> Roles { get; set; } = new(); - public HashSet<Post> Posts { get; set; } = new(); + public virtual HashSet<Post> Posts { get; set; } = new(); - public HashSet<User> Friends { get; set; } = new(); + public virtual HashSet<User> Friends { get; set; } = new(); - public HashSet<Comment> Comments { get; set; } = new(); + public virtual HashSet<Comment> Comments { get; set; } = new(); - public HashSet<RatedPost> RatedPosts { get; set; } = new(); + public virtual HashSet<RatedPost> RatedPosts { get; set; } = new(); } } diff --git a/src/Data/DevHive.Data/Repositories/UserRepository.cs b/src/Data/DevHive.Data/Repositories/UserRepository.cs index d570480..fb5faef 100644 --- a/src/Data/DevHive.Data/Repositories/UserRepository.cs +++ b/src/Data/DevHive.Data/Repositories/UserRepository.cs @@ -32,11 +32,11 @@ namespace DevHive.Data.Repositories public async Task<bool> AddRoleToUser(User user, string roleName) { bool succeeded = (await this._userManager.AddToRoleAsync(user, roleName)).Succeeded; - if (succeeded) - { - user.Roles.Add(await this._roleManager.FindByNameAsync(roleName)); - succeeded = await this.SaveChangesAsync(); - } + // if (succeeded) + // { + // user.Roles.Add(await this._roleManager.FindByNameAsync(roleName)); + // succeeded = await this.SaveChangesAsync(); + // } return succeeded; } @@ -45,14 +45,16 @@ namespace DevHive.Data.Repositories #region Read public override async Task<User> GetByIdAsync(Guid id) { - return await this._userManager.Users - .Include(x => x.Roles) - .Include(x => x.Languages) - .Include(x => x.Technologies) - .Include(x => x.Posts) - .Include(x => x.Friends) - .Include(x => x.ProfilePicture) - .FirstOrDefaultAsync(x => x.Id == id); + return await this._userManager.FindByIdAsync(id.ToString()); + + // return await this._userManager.Users + // .Include(x => x.Roles) + // .Include(x => x.Languages) + // .Include(x => x.Technologies) + // .Include(x => x.Posts) + // .Include(x => x.Friends) + // .Include(x => x.ProfilePicture) + // .FirstOrDefaultAsync(x => x.Id == id); } public async Task<User> GetByUsernameAsync(string username) diff --git a/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDatabase.cs b/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDatabase.cs index 1bd8df0..f6201b3 100644 --- a/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDatabase.cs +++ b/src/Web/DevHive.Web/Configurations/Extensions/ConfigureDatabase.cs @@ -9,6 +9,7 @@ using Microsoft.AspNetCore.Authentication.JwtBearer; using DevHive.Data; using System.Linq; using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore.Proxies; namespace DevHive.Web.Configurations.Extensions { @@ -18,6 +19,8 @@ namespace DevHive.Web.Configurations.Extensions { services.AddDbContext<DevHiveContext>(options => { + options.UseLazyLoadingProxies(); + options.EnableSensitiveDataLogging(true); options.UseNpgsql(configuration.GetConnectionString("DEV"), options => { diff --git a/src/Web/DevHive.Web/DevHive.Web.csproj b/src/Web/DevHive.Web/DevHive.Web.csproj index 6511c37..5b4df64 100644 --- a/src/Web/DevHive.Web/DevHive.Web.csproj +++ b/src/Web/DevHive.Web/DevHive.Web.csproj @@ -20,6 +20,7 @@ <PackageReference Include="Newtonsoft.Json" Version="12.0.3"/> <PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="5.0.3"/> <PackageReference Include="SonarAnalyzer.CSharp" Version="8.18.0.27296"/> + <PackageReference Include="Microsoft.EntityFrameworkCore.Proxies" Version="5.0.3"/> </ItemGroup> <ItemGroup> <ProjectReference Include="..\DevHive.Web.Models\DevHive.Web.Models.csproj"/> |
