public override void Joins(JoinCollection joins) { foreach (Join join in joins) { Join(@join); } }
/// <summary> /// Adds multiple child references in a single bulk operation /// <para>WARNING: Make sure to save the parent and child Entities before calling this method.</para> /// </summary> /// <param name="childIDs">The IDs of the child Entities to add.</param> /// <param name="session">An optional session if using within a transaction</param> /// <param name="cancellation">An optional cancellation token</param> public Task AddAsync(IEnumerable <string> childIDs, IClientSessionHandle session = null, CancellationToken cancellation = default) { parent.ThrowIfUnsaved(); var models = new List <WriteModel <JoinRecord> >(childIDs.Count()); foreach (var cid in childIDs) { cid.ThrowIfUnsaved(); var parentID = isInverse ? cid : parent.ID; var childID = isInverse ? parent.ID : cid; var filter = Builders <JoinRecord> .Filter.Where( j => j.ParentID == parentID && j.ChildID == childID); var update = Builders <JoinRecord> .Update .Set(j => j.ParentID, parentID) .Set(j => j.ChildID, childID); models.Add(new UpdateOneModel <JoinRecord>(filter, update) { IsUpsert = true }); } return(session == null ? JoinCollection.BulkWriteAsync(models, unOrdBlkOpts, cancellation) : JoinCollection.BulkWriteAsync(session, models, unOrdBlkOpts, cancellation)); }
public void Adding_single_sql_statement_returns_sql() { const string sql = "left join table a on a.id = b.id"; JoinCollection joinCollection = new JoinCollection(); joinCollection.Add(sql); joinCollection.Sql().MustBe(sql); }
public QueryTemplate(QueryType type) { _queryType = type; _insertValues = new InsertValueCollection(); _updateValues = new UpdateValueCollection(); _joinList = new JoinCollection(); _criteriaList = new CriteriaCollection(); _orderList = new OrderCollection(); }
public void Supports_multiple_sql_statements() { const string joina = "left join table a on a.id = b.id"; const string joinb = "left join table b on b.id = a.id"; JoinCollection joinCollection = new JoinCollection(); joinCollection.Add(joina); joinCollection.Add(joinb); joinCollection.Sql().MustBe("left join table a on a.id = b.id left join table b on b.id = a.id"); }
public override void Joins(JoinCollection joins) { foreach (Join join in joins) { if (join.JoinType == JoinType.Right || join.JoinType == JoinType.FullOuter) { throw new QueryBuilderNotImplementedForSqliteException("Percentage not implemented for SQLite"); } Join(@join); } }
/// <summary> /// Removes child references. /// </summary> /// <param name="childIDs">The IDs of the child Entities to remove the references of</param> /// <param name="session">An optional session if using within a transaction</param> /// <param name="cancellation">An optional cancellation token</param> public Task RemoveAsync(IEnumerable <string> childIDs, IClientSessionHandle session = null, CancellationToken cancellation = default) { var filter = isInverse ? Builders <JoinRecord> .Filter.And( Builders <JoinRecord> .Filter.Eq(j => j.ChildID, parent.ID), Builders <JoinRecord> .Filter.In(j => j.ParentID, childIDs)) : Builders <JoinRecord> .Filter.And( Builders <JoinRecord> .Filter.Eq(j => j.ParentID, parent.ID), Builders <JoinRecord> .Filter.In(j => j.ChildID, childIDs)); return(session == null ? JoinCollection.DeleteManyAsync(filter, null, cancellation) : JoinCollection.DeleteManyAsync(session, filter, null, cancellation)); }
public ApplicationUser() : base() { Events = new JoinCollection <Event, UserEvent>( UserEvents, ue => ue.Event, e => new UserEvent { User = this, Event = e }); Sessions = new JoinCollection <Session, UserSession>( UserSessions, us => us.Session, s => new UserSession { User = this, Session = s }); }
/// <summary> /// An IQueryable of JoinRecords for this relationship /// </summary> /// <param name="session">An optional session if using within a transaction</param> /// <param name="options">An optional AggregateOptions object</param> public IMongoQueryable <JoinRecord> JoinQueryable(IClientSessionHandle session = null, AggregateOptions options = null) { return(session == null ? JoinCollection.AsQueryable(options) : JoinCollection.AsQueryable(session, options)); }
public abstract void Joins(JoinCollection joins);
/// <summary> /// An IAggregateFluent of JoinRecords for this relationship /// </summary> /// <param name="session">An optional session if using within a transaction</param> /// <param name="options">An optional AggregateOptions object</param> public IAggregateFluent <JoinRecord> JoinFluent(IClientSessionHandle session = null, AggregateOptions options = null) { return(session == null ? JoinCollection.Aggregate(options) : JoinCollection.Aggregate(session, options)); }