/// <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); }
/// <summary> /// 更新索引 /// </summary> /// <param name="change">实体</param> public void Update(LuceneIndexChange change) { var changeset = new LuceneIndexChangeset(change); Update(changeset); }
/// <summary> /// 构造函数 /// </summary> /// <param name="change">被修改的实体</param> public LuceneIndexChangeset(LuceneIndexChange change) => Entries = new List <LuceneIndexChange>