From 5f6c663f1891d83f8a2c18021eb3ee7d53cdf8a5 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Sun, 14 Feb 2021 16:25:11 +0100 Subject: [PATCH] Making the load method of collections --- Kyoo/Controllers/LibraryManager.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/Kyoo/Controllers/LibraryManager.cs b/Kyoo/Controllers/LibraryManager.cs index b3cfbd41..593b0645 100644 --- a/Kyoo/Controllers/LibraryManager.cs +++ b/Kyoo/Controllers/LibraryManager.cs @@ -1,7 +1,9 @@ using System; using System.Collections; +using System.Collections.Generic; using System.Linq.Expressions; using System.Threading.Tasks; +using Microsoft.EntityFrameworkCore.ChangeTracking; namespace Kyoo.Controllers { @@ -42,9 +44,14 @@ namespace Kyoo.Controllers throw new ArgumentNullException(nameof(obj)); if (!Utility.IsPropertyExpression(member) || member == null) throw new ArgumentException($"{nameof(member)} is not a property."); - if (typeof(IEnumerable).IsAssignableFrom(typeof(T2))) - return _database.Entry(obj).Collection(member).LoadAsync(); - return _database.Entry(obj).Reference(member).LoadAsync(); + + EntityEntry entry = _database.Entry(obj); + + if (!typeof(IEnumerable).IsAssignableFrom(typeof(T2))) + return entry.Reference(member).LoadAsync(); + + Type collectionType = Utility.GetGenericDefinition(typeof(T2), typeof(IEnumerable<>)); + return Utility.RunGenericMethod(entry, "Collection", collectionType, member).LoadAsync(); } } } \ No newline at end of file