tay*_*onr 10 entity-framework-4 ef-code-first
我们首先使用EF代码,并为我们的销售数据库提供数据上下文.此外,我们有一个位于数据上下文之上的类,并执行一些基本的CRUD操作.
例如,我们有以下功能:
public static T Create<T>(int userId, T entity) where T : class, IAllowCreate
{
if (entity == null)
throw new ArgumentNullException("entity");
using (SalesContext dc = new SalesContext())
{
dc.Set<T>().Add(entity);
dc.SaveChanges();
return entity;
}
}
Run Code Online (Sandbox Code Playgroud)
我找到了一个如何创建伪上下文和IDBset属性的示例.我开始实现这一点,但我遇到了一个问题.
我们在代码中使用dc.Set()非常自由(如上所示),因为我们尝试创建通用的CRUD方法.我们不会使用ReadCustomer,ReadContact等,而只需执行Read().但是,dc.Set返回一个DbSet,而不是一个IDbSet,所以我无法模拟它.
有没有人能够模拟或伪造DbContext并仍然使用Set功能?
Die*_*hon 11
interface ISalesContext
{
IDbSet<T> GetIDbSet<T>();
}
class SalesContext : DbContext, ISalesContext
{
public IDbSet<T> GetIDbSet<T>()
{
return Set<T>();
}
}
Run Code Online (Sandbox Code Playgroud)
我使用了不同的名称,但new如果您希望隐藏常规实现,则可以使用运算符.
| 归档时间: |
|
| 查看次数: |
6152 次 |
| 最近记录: |