.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 并使用它。我觉得最好有你的自定义界面。
希望我给了你一些建议,没有说错什么。有人可以纠正我。
我有我的项目,其中有 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 并使用它。我觉得最好有你的自定义界面。
希望我给了你一些建议,没有说错什么。有人可以纠正我。