gpt4 book ai didi

entity-framework - 使用 Unity 注册 EF4 ObjectContext 的正确方法?

转载 作者:行者123 更新时间:2023-12-01 04:13:03 25 4
gpt4 key购买 nike

我在 Unity 中遇到了我的 EF4 ObjectContext 问题。具体来说,当 Unity 尝试使用以下代码解析我的 ObjectContext 时:

container.RegisterType<ObjectContext, MyObjectContext>(
new TransientLifetimeManager(), new InjectionConstructor());

它给了我:

The specified named connection is either not found in the configuration, not intended to be used with the EntityClient provider, or not valid.



我认为它可以使用在创建 EF4 数据模型时设置的硬连线连接(与无参数构造函数一起使用),但似乎我必须显式传递它:
container.RegisterType<ObjectContext, MyObjectContext>(
new TransientLifetimeManager(), new InjectionConstructor(connectionString));

此外,由于此方法似乎创建了我的(一次性)ObjectContext 的一个实例,什么时候销毁它的合适位置?

或者,我应该完全不同地做这件事吗?

提前致谢。

最佳答案

异常“在配置中找不到指定的命名连接,不打算与 EntityClient 提供程序一起使用,或者无效。”显然不是注册类型解析失败的结果,而是 EF 异常。

EF 设计者应该使用如下构造函数创建上下文:

public MyObjectContext() : base("name=MyObjectContext", "MyObjectContext")
{
...
}

并将连接字符串添加到 app.config/web.config。假设设计者没有做错,我会排除这个“命名连接”“不打算与 EntityClient 提供者一起使用,或者无效”。仍然是“在配置中找不到”“命名连接”。

您是否检查了连接字符串是否在 app.config/web.config 中?您解决 ObjectContext 的项目 ?例如,如果您在单独的类库中拥有 EF 模型,则 EF 会在该项目中使用正确的连接字符串创建一个 app.config。如果您从另一个引用您的 EF 类库的项目中使用此模型,您需要手动将连接字符串复制到此项目的 app.config/web.config。 EF 不会查看您的类库的配置。

关于您的问题,销毁 ObjectContext 的正确位置是什么,最一般的答案是:“当您不再需要它时”。在不了解项目背景的情况下很难给出建议。如果您需要的数据访问是一种方法,我认为您可以编写:
using (var context = container.Resolve<ObjectContext>())
{
// your EF operations
}

关于entity-framework - 使用 Unity 注册 EF4 ObjectContext 的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982868/

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