我有一个项目,其中有
MyDbContext
类和 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 works but I don't 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 并使用它。我认为最好有您的自定义界面。
希望我给了你一些建议并且没有说错什么。有人可以纠正我吗