庫模式創建我有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