ole*_*sii 9 c# repository-pattern ravendb
我正在使用Raven DB的存储库模式.我的存储库界面是
public interface IRepository<T> where T : Entity
{
IEnumerable<T> Find(Func<T, bool> exp);
void Delete(T entity);
void Save();
...
}
Run Code Online (Sandbox Code Playgroud)
并且实施是
public class Repository<T> : IRepository<T> where T : Entity
{
public IEnumerable<T> Find(Func<T, bool> exp)
{
return session.Query<T>().Where(exp);
}
public void Delete(T entity)
{
session.Delete(entity);
}
public void Save()
{
session.SaveChanges();
}
...
}
Run Code Online (Sandbox Code Playgroud)
我有一个测试,标记所有实体的删除,保存更改和查询数据库,以查看结果计数是否为零
[Test]
public void DeleteValueTest()
{
//resolve repository
var repository = ContainerService.Instance.Resolve<IRepository<DummyType>>();
Func<DummyType, bool> dummyTypeExpr = item => item.GetType() == typeof(DummyType);
//find all entries of dummy types and mark for deletion
var items = repository.Find(dummyTypeExpr);
foreach (var item in items)
{
repository.Delete(item);
}
//commit changes
repository.Save();
//populate all dummy types, shall be nothing in there
items = repository.Find(dummyTypeExpr);
int actualCount = items.Count();
int expectedCount = 0;
Assert.AreEqual(expectedCount, actualCount);
}
Run Code Online (Sandbox Code Playgroud)
测试因样本输出而失败
RepositoryTest.DeleteValueTest : FailedExecuting query '' on index 'dynamic/DummyTypes' in 'http://localhost:8080'
Query returned 5/5 results
Saving 1 changes to http://localhost:8080
Executing query '' on index 'dynamic/DummyTypes' in 'http://localhost:8080'
Query returned 4/5 results
Expected: 0
But was: 4
Run Code Online (Sandbox Code Playgroud)
问题是如果我多次运行此测试,实际上正在删除项目(一次2-3项).我看到有一个IDocumentQuery有WaitForNonStaleResults方法.
IDocumentQuery<T> WaitForNonStaleResults();
Run Code Online (Sandbox Code Playgroud)
但我在NuGet安装的Raven.Client.Lightweight命名空间中找不到它.
总结如何等待数据库更新以及如何读取新数据.我做错了什么吗?谢谢你的帮助!
Roj*_*uck 13
Session.Query<Foo>().Customize(x=>x.WaitForNonStaleResults())
Run Code Online (Sandbox Code Playgroud)
请注意,不建议使用此功能.至少使用WaitForNonStaleResultsAsOfNow
根据ayende的回应:
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |