.NET EF 上下文工厂共享库

.NET EF contextfactory share over libarary

我有我的项目,其中有 MyDbContext class 和 dbsets 等。我有一个图书馆项目,我在我的项目中共享了一些实用程序。

我也想在图书馆使用 MyDbContext。但是对于每个项目,dbcontext 在逻辑上都是另一个。我想通过 属性 IDbContextFactory 的界面进行操作。但是这个接口需要泛型(DbContext)但是库中没有。

我试图找到一些解决方案,但我不知道该怎么做。

感谢您的建议。

[编辑]

这在我的申请中

public partial class TestRepository 
{
   public TestRepository(IDbContextFactory<MyDbContext> con) 
   {

   }
}

我会在图书馆使用类似的东西。但是我不能在那里使用 MyDbContext 因为不存在。所以我希望我将使用引用 IDbContextFactory 的接口来完成它,但我需要通用类型...

// Not working in library
public partial class TestRepository 
{
   public TestRepository(IDbContextFactory<MyDbContext> con) 
   {

   }
}
// Maybe work but i dont how do it
public partial class TestRepository 
{
   public TestRepository(IFrameworkDbContextFactory con) 
   {

   }
}

也许这可以帮到你。

在库 crete 界面中

public interface ISharedDbContextFactory : IDbContextFactory<DbContext> {}

在项目中实现

public class SharedDbContextFactory : ISharedDbContextFactory {
   private IDbContextFactory<MyDbContext> _contextFactory;

   public SharedDbContextFactory(IDbContextFactory<MyDbContext> contextFactory) {
       _contextFactory = contxtFactory;
   }

   public MyDbContext CreateDbContext()
   {
       return _contextFactory.CreateDbContext();
   }
}

然后添加到di配置中。您也可以注册到仅 IDbContextFactory 并使用它。我觉得最好有你的自定义界面。

希望我给了你一些建议,没有说错什么。有人可以纠正我。