簡體   English   中英

如何在其他層中刪除對Entity Framework的引用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM