// acknowledgement: http://stackoverflow.com/a/5022512/1500199
public class FakeDbSet<T> : IDbSet<T> where T : class
{
private readonly HashSet<T> data;
private readonly IQueryable query;
public FakeDbSet()
{
data = new HashSet<T>();
query = data.AsQueryable();
}
public virtual T Find(params object[] keyValues)
{
throw new NotImplementedException();
}
}
如何实现Find
?
我需要确定 T
的主键值,以便在 Find
方法中执行键值比较,但我不知道如何做。
最佳答案
试试这个:
public class FakeDbSet<T> : IDbSet<T> where T : class
{
private Func<T, object[], bool> _findSelector
private readonly HashSet<T> data;
private readonly IQueryable query;
public FakeDbSet(Func<T, object[], bool> findSelector)
{
_findSelector = findSelector;
data = new HashSet<T>();
query = data.AsQueryable();
}
public virtual T Find(params object[] keyValues)
{
return _data.SingleOrDefault(item => _findSelector(item, keyValues));
}
}
关于c# - 如何 stub DbSet.Find,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24973248/