示例#1
0
        /// <summary>
        /// 检查数据库上下文更改,并返回LuceneIndexChanges类型的集合
        /// </summary>
        /// <returns> LuceneIndexChangeset  - 转换为LuceneIndexChanges类型的实体更改集合</returns>
        private LuceneIndexChangeset GetChangeset()
        {
            var changes = new LuceneIndexChangeset();

            foreach (var entity in Context.ChangeTracker.Entries().Where(x => x.State != EntityState.Unchanged))
            {
                var entityType = entity.Entity.GetType();
                if (!typeof(ILuceneIndexable).IsAssignableFrom(entityType) || entityType.GetMethod("ToDocument") is null)
                {
                    continue;
                }

                var change = new LuceneIndexChange(entity.Entity as ILuceneIndexable);

                switch (entity.State)
                {
                case EntityState.Added:
                    change.State = LuceneIndexState.Added;
                    break;

                case EntityState.Deleted:
                    change.State = LuceneIndexState.Removed;
                    break;

                case EntityState.Modified:
                    change.State = LuceneIndexState.Updated;
                    break;

                default:
                    change.State = LuceneIndexState.Unchanged;
                    break;
                }

                changes.Entries.Add(change);
            }

            return(changes);
        }
示例#2
0
        /// <summary>
        /// 更新索引
        /// </summary>
        /// <param name="change">实体</param>
        public void Update(LuceneIndexChange change)
        {
            var changeset = new LuceneIndexChangeset(change);

            Update(changeset);
        }
示例#3
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="change">被修改的实体</param>
 public LuceneIndexChangeset(LuceneIndexChange change) => Entries = new List <LuceneIndexChange>