diff --git a/zero.Raven/Operations/RavenOperations.Read.cs b/zero.Raven/Operations/RavenOperations.Read.cs index d3c8d825..f92612d4 100644 --- a/zero.Raven/Operations/RavenOperations.Read.cs +++ b/zero.Raven/Operations/RavenOperations.Read.cs @@ -42,6 +42,27 @@ public partial class RavenOperations : IRavenOperations } + /// + public virtual async Task> LoadAsList(IEnumerable ids) where T : ZeroIdEntity, new() + { + ids = ids.Distinct().ToArray(); + + Dictionary models = await Session.LoadAsync(ids); + List result = new(); + + foreach (string id in ids) + { + models.TryGetValue(id, out T model); + if (WhenActive(model) != null) + { + result.Add(model); + } + } + + return result; + } + + /// public virtual async Task Any(Func, IQueryable> querySelector = default) where T : ZeroIdEntity, new() { diff --git a/zero.Raven/Operations/RavenOperations.cs b/zero.Raven/Operations/RavenOperations.cs index a18c0ae2..11530104 100644 --- a/zero.Raven/Operations/RavenOperations.cs +++ b/zero.Raven/Operations/RavenOperations.cs @@ -183,6 +183,11 @@ public interface IRavenOperations /// Task> Load(IEnumerable ids) where T : ZeroIdEntity, new(); + /// + /// Get entities by ids + /// + Task> LoadAsList(IEnumerable ids) where T : ZeroIdEntity, new(); + /// /// Get entities by query ///