public IEnumerable <WriteModel <TEntity> > GetModel(WriteModelOptions options)
        {
            var entity = EntityEntry.Entity as TEntity;

            var validationContext = new ValidationContext(entity);

            Validator.ValidateObject(entity, validationContext);

            yield return(new InsertOneModel <TEntity>(entity));
        }
Пример #2
0
        public IEnumerable <WriteModel <TEntity> > GetModel(WriteModelOptions options)
        {
            var entity = EntityEntry.Entity as TEntity;

            var validationContext = new ValidationContext(entity);

            Validator.ValidateObject(entity, validationContext);

            var definition      = EntityMapping.GetOrCreateDefinition(typeof(TEntity));
            var updateDefintion = UpdateDefinitionHelper.CreateFromDiff <TEntity>(EntityEntry.OriginalValues, EntityEntry.CurrentValues);

            yield return(new UpdateOneModel <TEntity>(definition.CreateIdFilterFromEntity(entity), updateDefintion));
        }
        public IEnumerable <WriteModel <TEntity> > GetModel(WriteModelOptions options)
        {
            var definition = EntityMapping.GetOrCreateDefinition(typeof(TEntity));

            yield return(new DeleteOneModel <TEntity>(definition.CreateIdFilterFromEntity(EntityEntry.Entity as TEntity)));
        }
Пример #4
0
        public IEnumerable <WriteModel <EntityBucket <TGroup, TSubEntity> > > GetModel(WriteModelOptions options)
        {
            var filterBuilder = Builders <EntityBucket <TGroup, TSubEntity> > .Filter;
            var filter        = filterBuilder.And(
                filterBuilder.Eq(b => b.Group, Group),
                filterBuilder.Where(b => b.ItemCount < BucketSize)
                );

            var entityDefinition = EntityMapping.GetOrCreateDefinition(typeof(EntityBucket <TGroup, TSubEntity>));

            var itemTimeValue = (DateTime)EntityTimeProperty.GetValue(SubEntity);

            var updateDefinition = Builders <EntityBucket <TGroup, TSubEntity> > .Update
                                   .Inc(b => b.ItemCount, 1)
                                   .Push(b => b.Items, SubEntity)
                                   .Min(b => b.Min, itemTimeValue)
                                   .Max(b => b.Max, itemTimeValue)
                                   .SetOnInsert(b => b.BucketSize, BucketSize)
                                   .SetOnInsert(b => b.Id, entityDefinition.KeyGenerator.Generate());

            yield return(new UpdateOneModel <EntityBucket <TGroup, TSubEntity> >(filter, updateDefinition)
            {
                IsUpsert = true
            });
        }
        public IEnumerable <WriteModel <TEntity> > GetModel(WriteModelOptions options)
        {
            var definition = EntityMapping.GetOrCreateDefinition(typeof(TEntity));

            yield return(new DeleteOneModel <TEntity>(definition.CreateIdFilter <TEntity>(EntityId, options?.TenantId)));
        }
        public IEnumerable <WriteModel <EntityBucket <TGroup, TSubEntity> > > GetModel(WriteModelOptions options)
        {
            var filterBuilder = Builders <EntityBucket <TGroup, TSubEntity> > .Filter;
            var filter        = filterBuilder.Eq(b => b.Group, Group);

            yield return(new DeleteManyModel <EntityBucket <TGroup, TSubEntity> >(filter));
        }
Пример #7
0
 public IEnumerable <WriteModel <TEntity> > GetModel(WriteModelOptions options)
 {
     yield return(new DeleteManyModel <TEntity>(Predicate));
 }