gpt4 book ai didi

c# - 什么可能导致 Entity Framework 抛出消息为 "(some type) is neither a super-type nor a sub-type of (some other type)"的异常?

转载 作者:太空宇宙 更新时间:2023-11-03 16:30:07 28 4
gpt4 key购买 nike

我正在处理一个 EF 问题,我发现它很难调试...以前,在我的系统中有一个表类型继承设置管理不同的用户类型 - 所有用户共有的一种根类型,以及大致基于使用该帐户的人员类型的几种不同的子类型。现在,我遇到了一些问题,要求我删除继承,而是在每个子类上放置一个 UserId 属性,这是用户 Id 属性的外键。因此,现在其他用户类型将不再是用户,而是具有用户导航属性。

我已经使用 EDMX 设计器删除了所有继承关联,添加了所有 UserId 属性及其关联,确保所有其他用户类型现在都有自己的实体键,并获得了关联和导航属性用户设置每个特定的。然而,当我实际运行我的应用程序时,我收到一个 TargetInvocationException 消息,告诉我“用户既不是(其他类型)的父类(super class)型也不是子类型”。

我一直在寻找有关此错误消息的其他引用资料,但找不到任何内容,而且我无法确定是什么导致了它。在我的 EDMX 中,似乎不再提及 User 和其他类型之间的任何类型的继承,但消息仍然存在。我认识的人以前都没有见过它。

我真的没有任何代码可以提供引用;这似乎是一个映射问题。有没有人之前看到过此特定消息的异常?

最佳答案

事实证明,问题实际上并不像我所怀疑的那样出在 EDMX 内部。通常当映射出现问题时,代码总是会在同一行上崩溃,在我尝试反射性地实例化实体存储库的地方。因为这是抛出异常的地方,我认为这是一个映射问题,但是关闭项目的自定义错误显示在特定存储库的构造函数中,另一个开发人员插入了对 ObjectContext.CreateObjectSet<User>().OfType<(user sub-category type)>() 的调用。 .这就是导致问题的原因。我怀疑异常在调试时没有向我显示这一行,因为存储库的构造函数被反射调用。更改此调用后,一切正常。

关于c# - 什么可能导致 Entity Framework 抛出消息为 "(some type) is neither a super-type nor a sub-type of (some other type)"的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11110309/

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