使用Unity时实体框架错误

2024-02-05

在尝试解决我的服务类时,我收到一个错误DbContext无法构造,因为它是一个抽象类。错误消息在这里:

Unity.Exceptions.ResolutionFailedException: 'Resolution of the dependency failed, type = 'MyService.MyClass', name = '(none)'.
Exception occurred while: while resolving.
Exception is: InvalidOperationException - The current type, System.Data.Common.DbConnection, is an abstract class and cannot be constructed. Are you missing a type mapping?
-----------------------------------------------
At the time of the exception, the container was: 
  Resolving ...
      ...
          Resolving MyApp.MyRepository,(none)
          Resolving parameter 'myDbContext' of constructor MyApp.MRepository(MyApp.IMyDbContext myDbContext)
          ...
              Resolving parameter 'existingConnection' of constructor MyApp.MyDbContext(System.Data.Common.DbConnection existingConnection, System.Data.Entity.Infrastructure.DbCompiledModel model, System.Boolean contextOwnsConnection)
                Resolving System.Data.Common.DbConnection,(none)
'

DBContext 看起来像这样:

public class MyDbContext : System.Data.Entity.DbContext, IMyDbContext
{
    public MyDbContext()
        : base("MainConnectionString")
    {
    }

我的猜测是 EF 在配置文件中查找连接字符串;但连接字符串已定义:

<connectionStrings>
    <add name="MainConnectionString" connectionString="Server=.\SQLEXPRESS;Database=MyDB;User Id= . . ." providerName="System.Data.SqlClient" />
</connectionStrings>

统一注册:

因此,我的问题是 EF 如何构建这个类,很明显我在配置中遗漏了一些东西。

UnityContainer container = new UnityContainer();
container.RegisterType<IMyDbContext, MyDbContext>();
container.RegisterType<IMyRepository, MyRepository>();
container.RegisterInstance<IUnityContainer>(container);

As per 这个答案 https://stackoverflow.com/a/13752500:

Unity 将解析具体类型 (.Resolve),但必须通过将接口与具体类型关联来显式注册接口。

所以,你有 2 个选择:

  1. 注册IMyDbContext与Unity的接口
  2. 停止使用IMyDbContext并使用具体类型(在这种情况下,Unity 将自动解析它,尽管您可能需要手动执行以控制生命周期)

请注意,使用 DI 接口的主要目的是能够交换实现,所以如果您的应用程序实际上并未交换一个相同的数据库模式另一方面,在这种情况下您可能不需要该接口。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Unity时实体框架错误 的相关文章

随机推荐

  • Rails 3:延迟加载与急切加载

    在 Rails 3 中 这些是相同还是不同 它们有何不同 o Appointment find 297 o service o Appointment includes service find 297 o service 我不确定 但看起
  • Scala Option 对象位于另一个 Option 对象内

    我有一个模型 其中有一些选项字段 其中包含另一个选项字段 例如 case class First second Option Second name Option String case class Second third Option
  • WiX,如何防止文件卸载,尽管我们忘记设置永久=“是”

    我们有一个用 Wix 创建的产品安装程序 其中包含一个程序包 V1 和一些配置文件 现在 我们将使用新的产品代码进行重大升级 其中旧版本的产品被卸载并且 V2 已安装 我们想要的是保存其中一个配置文件以防止卸载 因为 V2 也需要它 不幸的
  • R:深度复制函数参数

    考虑下面的代码 i 3 j i i 4 j i 然而 我想要的是 i 3 f lt function x j i x j i 4 f 4 16 but i want it to be 12 如果您想知道为什么我要这样做 您可以考虑这段代码
  • Java反射:如何从对象获取字段值,而不知道它的类

    比如说 我有一个返回自定义的方法List与一些物体 它们返回为Object大部头书 我需要从这些对象中获取某个字段的值 但我不知道这些对象的类 有没有办法通过反射或其他方式来做到这一点 假设一个简单的情况 你的领域是public List
  • 字形未加载

    由于某种原因 当我使用 twitter bootstrap 2 3 2 时 图像的图标未加载 我有默认结构 CSS 图像 js 其他一切都有效 我也尝试添加一个简单的图标 例如 span class icon icon ok OK span
  • RabbitMq - ConversationId 与 CorrelationId - 哪个更适合跟踪特定请求?

    RabbitMQ 似乎有两个非常相似的属性 我并不完全理解其中的区别 ConversationId and CorrelationId 我的用例如下 我有一个网站 可以生成Guid 该网站调用 API 将该唯一标识符添加到HttpReque
  • 类型错误:“builtin_function_or_method”对象没有属性“__getitem__”

    我有简单的python功能 def readMainTemplate templateFile template open templateFile r data template read index1 data index origin
  • 类型错误:无法读取反应中未定义的属性“减少”

    我有一个表单 要求用户输入几个字段的字段值 将字段值存储在状态中并以自定义格式显示状态值 所以 我有几个输入字段和一个提交按钮
  • 如何使用 Bash 脚本自动添加用户帐户和密码?

    我需要能够在 Linux Fedora 10 上创建用户帐户 并通过 bash 脚本 或其他方式 如果需要的话 自动分配密码 通过 Bash 创建用户很容易 例如 whoever server usr sbin useradd newuse
  • Angular 2中的zip文件上传问题

    当我尝试上传 zip 文件时 不幸的是它没有上传到服务器上 它给了我错误 有些事情发生了 这是我的代码 const event this fileEvent console log FileEvent gt event const file
  • 在开发容器中运行 VSCode 时如何打开本地终端?

    我正在使用 VSCode 从内部编写代码VSCode 容器 https code visualstudio com docs remote containers 我可以在开发容器内打开终端 https code visualstudio c
  • SHA256 哈希值有多长?

    我要跑SHA256密码 盐 但我不知道要花多长时间VARCHAR设置 MySQL 数据库时 什么是好的长度 正如其名称所示 sha256 的长度为 256 位 由于 sha256 返回十六进制表示 4 位足以编码每个字符 而不是 8 位 如
  • ActionBar 中的 XP 样式字形烦恼

    我不想问太多与组件外观相关的问题 但如今应用程序中的外观似乎同样重要 无论如何 请看下面的图片 两者都使用 TActionManager 和 TActionMainMenuBar 来创建我的主菜单 图像左侧的菜单使用平台默认样式 右侧的菜单
  • 交叉引用自定义引用类型

    我正在尝试将交叉引用添加到 SEQ 字段中 我的文档包含 点标题 这意味着在两个标题元素之间 用户可以添加扩展名 1 1 和 1 2 之间可能是 1 1A 1 1B 点标题代码如下所示 STYLEREF HEADING 2 N SEQ HE
  • 如何获取对象数组中布尔值的计数(如果为真)

    我必须获取对象数组中布尔值的计数 如果为真 json结构如下 id 5 name a select true id 3 name b select false id 2 name x select true id 1 name y sele
  • 将参数传递给 HTML 中的表单操作

    我正在尝试使用此处的文件实现简单的文件上传 http www sanwebe com 2012 05 ajax image upload and resize with jquery and php 我让它工作并设法通过 CSS 更改样式等
  • 逗号运算符如何工作以及它有什么优先级?

    C 中的逗号运算符如何工作 例如 如果我这样做 a b c a最终等于b还是c 是的 我知道这很容易测试 只需在这里记录一下 以便有人可以快速找到答案 Update 这个问题暴露了使用逗号运算符时的细微差别 只是为了记录这一点 a b c
  • 动态替换 XML DML 中节点的值

    我现在正在努力解决这个问题 如何替换文本等于某个变量值的非类型化 XML 列中的节点值 是否可以 My XML
  • 使用Unity时实体框架错误

    在尝试解决我的服务类时 我收到一个错误DbContext无法构造 因为它是一个抽象类 错误消息在这里 Unity Exceptions ResolutionFailedException Resolution of the dependen