库模式创建我有EF代码优先库模式时,我没有把握的东西。如果我想抽象出EF,我将不得不使我的存储库的类型为IObjectContextAdapter,否?这是DbContext实现的。如果我稍后转而使用NHibernate或其他第三方ORM,它可能不会实现IObjectContextAdapter。与EF代码优先
是我创建一个包装的ORM并不会返回IObjectContextAdapter的实现的包装唯一的解决办法?如果是这样,那有什么意义?
库模式创建我有EF代码优先库模式时,我没有把握的东西。如果我想抽象出EF,我将不得不使我的存储库的类型为IObjectContextAdapter,否?这是DbContext实现的。如果我稍后转而使用NHibernate或其他第三方ORM,它可能不会实现IObjectContextAdapter。与EF代码优先
是我创建一个包装的ORM并不会返回IObjectContextAdapter的实现的包装唯一的解决办法?如果是这样,那有什么意义?
我不知道你有创造与EF存储库模式时实现IObjectContextAdapter
。使用EF或类似的NHibernate之间的主要区别将如何分别要么DbContext
或ISession
包裹。
这里的EF代码优先库是如何被写成草图:
public interface IRepository<TEntity>
{
void Save();
}
public class Repository<TEntity> : IRepository<TEntity>
{
private readonly IDbSet<TEntity> entitySet;
public Repository(DbContext context)
{
this.entitySet = context.Set<TEntity>();
}
public void Save()
{
return this.entitySet.SaveChanges();
}
}
这使得实际DbContext
被注入。
我不继,该库必须是类型'IObjectContextAdapter'逻辑。也许一些示例代码会有所帮助。 – 2013-04-21 20:20:53
不久之后会添加一个代码示例,但同时,我的意思是,如果我有一个在存储库上执行操作的类,那么我将指定一个属性,该类是存储库必须具有的抽象类型。所以公共IObjectContextAdapter Repository {get;组; }然后在我的方法,我只会做这样的事情.Repository.Save();等 – Gho5t 2013-04-21 20:30:49
我仍然不关注。为什么不定义一个接口'IRepository'创建实际的'EFRepository'使一个构造函数的'IDbContext'时有一个'Save',然后。坚持下去并在实现IRepository.Save()时使用它。然后,你的属性被定义为'public IRepository Repository {get;组; }'等 – 2013-04-21 20:33:21