[英]How to remove references to Entity Framework in other layers
我有一個三層的應用程序:
數據層使用EF 6(代碼優先)連接到數據庫。
我創建了一個由DbContext實現的接口:
public interface IMyDbContext
{
DbSet<TEntity> Set<TEntity>() where TEntity : class;
int SaveChanges();
void Dispose();
}
public class MyDbContext : DbContext, IMyDbContext
{
//...
public DbSet<Account> Accounts { get; set; }
public DbSet<Module> Modules { get; set; }
public DbSet<User> Users { get; set; }
//...
}
我想從“域服務”層中刪除對EF的引用,這就是為什么我使用“依賴注入”將此接口注入到“域服務”層中的原因。
但是,DbSet類在EF二進制文件中進行了描述,因此無法正常工作。
我想使用這種抽象代替實際的EF實現,但是我遇到了麻煩。 我試過使用IQueryable代替DbSet,但這沒有用。
我不想使用(通用)存儲庫,但是我想在域邏輯中重用EF的DbSet和DbContext功能。
您正在尋找的是Unit of Work
模式。 這將幫助您防止數據邏輯泄漏到域層。 這是一個很好的教程。
一個好的解決方案是使用存儲庫模式 (連同工作單元)並創建一個更多的Repository <T>抽象。
http://www.codeproject.com/Articles/526874/Repositorypluspattern-cplusdoneplusright
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.