gpt4 book ai didi

entity-framework - 如何在 Code First 中在多个上下文(相同基础的)之间动态切换

转载 作者:行者123 更新时间:2023-12-04 07:23:36 25 4
gpt4 key购买 nike

我正在开发一个具有 DbContext 的核心项目的解决方案(名为 CoreContext )。此上下文包含一个实体 (Product) 以及其他几个实体,它引用抽象类 (ProductConstraints),为通用产品提供通用验证规则。永远不会直接使用此上下文。在继承 CoreContext 的同一解决方案中还有其他三个项目(Product1、Product2 和 Product3) (作为 ProductXContext)和 ProductConstraints (作为 ProductXConstraints)类,为它的特定产品实现自定义验证规则。

还有另一个项目包含自定义 CodeFirstMembership .它的“用户”实体包含一个“产品”属性,用于定义用户将使用的产品。

最后,我有一个 MVC3 项目,我想根据当前用户的“产品”信息实例化适当的上下文。创建类似于 ContextFactory 的东西收到此产品并返回正确的 DbContext .我尝试了一些方法,但没有取得重大成功。

最佳答案

您可以使用依赖注入(inject)来解决您的问题。如果用户只绑定(bind)一个产品,您可以将该详细信息存储在 Session 中。避免往返数据库。

public class ContextFactory
{
public CoreContext CreateContext()
{
var product = HttpContext.Current.Session["Product"] as string;

//resolve the correct context

return context;
}
}

然后你可以用你的 DI 容器注册工厂。
builder.Register(c => ContextFactory.CreateContext()).As<CoreContext>();

然后你可以在你的 Controller 中使用构造函数注入(inject)
public class MyController : Controller
{
public MyController(CoreContext context)
{

}
}

关于entity-framework - 如何在 Code First 中在多个上下文(相同基础的)之间动态切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8704491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com