我正在尝试创建一个围绕QueryableBase和INhQueryProvider的包装器,它将在构造函数中接收一个集合并在内存中查询它而不是转到数据库.这样我就可以模仿NHibernate的行为ToFuture()并正确地对我的类进行单元测试.
问题是我由于无限递归而面临堆栈溢出,我正在努力寻找原因.
这是我的实现:
public class NHibernateQueryableProxy<T> : QueryableBase<T>, IOrderedQueryable<T>
{
public NHibernateQueryableProxy(IQueryable<T> data) : base(new NhQueryProviderProxy<T>(data))
{
}
public NHibernateQueryableProxy(IQueryParser queryParser, IQueryExecutor executor) : base(queryParser, executor)
{
}
public NHibernateQueryableProxy(IQueryProvider provider) : base(provider)
{
}
public NHibernateQueryableProxy(IQueryProvider provider, Expression expression) : base(provider, expression)
{
}
public new IEnumerator<T> GetEnumerator()
{
return Provider.Execute<IEnumerable<T>>(Expression).GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
internal class NhQueryProviderProxy<T> : INhQueryProvider
{
private readonly IQueryProvider provider;
public NhQueryProviderProxy(IQueryable<T> data)
{ …Run Code Online (Sandbox Code Playgroud) 假设我有以下情况:
A -- B -- C -- D -- H master
\ /
E -- F -- G topicA
\
I -- J -- K topicB
Run Code Online (Sandbox Code Playgroud)
topicA已master使用--squash开关合并到其中,这意味着master不知道的历史topicA。
如果我现在合并master成一个topicB,然后做一个diff master...topicB比较,那么它就变得混乱了,其中包含了许多不应该存在的更改或撤消。
在这种情况下,我通常会合并master成topicA再topicA成topicB做在前面的段落前说。但是,有时这是不可能的(例如,删除了分支),并且我遇到了很多冲突。
在这种情况下我应该如何进行?我有什么误解吗?
是rebase --onto master topicA topicB正确的解决方案?