实体框架 6 - 该类型已配置为实体类型。它不能被重新配置为复杂类型

2023-12-21

我有一个实体,我对其进行了微小的更改。我已将外键设置为不可为空并且是必需的。 当我开始创建实体框架迁移时,我收到一个错误:

类型“付款”已配置为实体类型。它 无法重新配置为复杂类型。

我不明白为什么会这样。我没有将任何类定义为复杂类型。 我使用的是 Enum,但它一直存在并且以前从未出现过问题,并且在 EF6 下受支持。

该项目本身仍然编译得很好。

这是导致问题的 Payment 类。

public partial class Payment
{
    public int payment_ID { get; set; }
    public int order_ID { get; set; }
    public PaymentTypeEnum paymentType_ID { get; set; }
    public string cc_response_ReceiptNo { get; set; }
    public string cc_response_QSIResponseCode { get; set; }
    public string cc_response_QSIResponseDescription { get; set; }
    public string cc_response_TransactionNo { get; set; }
    public string cc_response_BatchNo { get; set; }
    public DateTime? cc_response_expected { get; set; }
    public bool? cc_response_checked { get; set; }
    public DateTime? paymentReceived { get; set; }
    public int? paymentAmountUnits { get; set; }
    public string paymentNotes { get; set; }
    public string cc_GatewayIdent { get; set; }
    public virtual Order Order { get; set; }
    public virtual PaymentType PaymentType { get; set; }
    public virtual ICollection<CreditNote> CreditNotes { get; set; }
}

测绘信息

 public class tbl_paymentMap : EntityTypeConfiguration<Payment>
{
    public tbl_paymentMap()
    {
        // Primary Key
        this.HasKey(t => t.payment_ID);

        // Properties
        this.Property(t => t.cc_response_ReceiptNo)
            .HasMaxLength(12);

        this.Property(t => t.cc_response_QSIResponseCode)
            .HasMaxLength(2);

        this.Property(t => t.cc_response_QSIResponseDescription)
            .HasMaxLength(150);

        this.Property(t => t.cc_response_TransactionNo)
            .HasMaxLength(21);

        this.Property(t => t.cc_response_BatchNo)
            .HasMaxLength(21);

        this.Property(t => t.paymentNotes)
            .HasMaxLength(100);

        this.Property(t => t.cc_GatewayIdent)
            .HasMaxLength(50);

        // Table & Column Mappings
        this.ToTable("tbl_payment");
        this.Property(t => t.payment_ID).HasColumnName("payment_ID");
        this.Property(t => t.order_ID).HasColumnName("order_ID");
        this.Property(t => t.paymentType_ID).HasColumnName("paymentType_ID");
        this.Property(t => t.cc_response_ReceiptNo).HasColumnName("cc_response_ReceiptNo");
        this.Property(t => t.cc_response_QSIResponseCode).HasColumnName("cc_response_QSIResponseCode");
        this.Property(t => t.cc_response_QSIResponseDescription).HasColumnName("cc_response_QSIResponseDescription");
        this.Property(t => t.cc_response_TransactionNo).HasColumnName("cc_response_TransactionNo");
        this.Property(t => t.cc_response_BatchNo).HasColumnName("cc_response_BatchNo");
        this.Property(t => t.cc_response_expected).HasColumnName("cc_response_expected");
        this.Property(t => t.cc_response_checked).HasColumnName("cc_response_checked");
        this.Property(t => t.paymentReceived).HasColumnName("paymentReceived");
        this.Property(t => t.paymentAmountUnits).HasColumnName("paymentAmountUnits");
        this.Property(t => t.paymentNotes).HasColumnName("paymentNotes");
        this.Property(t => t.cc_GatewayIdent).HasColumnName("cc_GatewayIdent");

        // Relationships
        this.HasRequired(t => t.Order)
            .WithMany(t => t.Payments)
            .HasForeignKey(d => d.order_ID);
        this.HasRequired(t => t.PaymentType)
            .WithMany(t => t.Payments)
            .HasForeignKey(d => d.paymentType_ID);
   }
}

好吧,结果证明这是我自己做的一件奇怪的事情。 除了我的付款类之外,还有贷项票据类。 您可以在我原来的问题中看到,一笔付款可能有许多贷方票据。

最重要的是,付款和贷方票据都单独引用了订单。

在执行一些规范化时,我从贷方票据类中删除了订单类的链接。在修复随之而来的错误时,我对查找和替换有点疯狂,并无意中在贷方票据映射中执行了它。

thus

    public tbl_creditnoteMap()
    {
       this.Property(t => t.order_ID).HasColumnName("order_ID");

became

    public tbl_creditnoteMap()
    {
       this.Property(t => t.Payment.order_ID).HasColumnName("order_ID");

实际上它应该被完全删除。 这显然打破了幕后的事情。

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

实体框架 6 - 该类型已配置为实体类型。它不能被重新配置为复杂类型 的相关文章

  • 如何使 Windows 窗体的关闭按钮不关闭窗体但使其不可见?

    该表单有一个 NotifyIcon 对象 当用户单击 关闭 按钮时 我希望表单不关闭而是变得不可见 然后 如果用户想再次查看该表单 可以双击系统托盘中的图标 如果用户想关闭表单 可以右键单击该图标并选择 关闭 有人可以告诉我如何使关闭按钮不
  • WPF 中的调度程序和异步等待

    我正在尝试学习 WPF C 中的异步编程 但我陷入了异步编程和使用调度程序的困境 它们是不同的还是在相同的场景中使用 我愿意简短地回答这个问题 以免含糊不清 因为我知道我混淆了 WPF 中的概念和函数 但还不足以在功能上正确使用它 我在这里
  • 为什么#pragma optimize("", off)

    我正在审查一个 C MFC 项目 在某些文件的开头有这样一行 pragma optimize off 我知道这会关闭所有以下功能的优化 但这样做的动机通常是什么 我专门使用它来在一组特定代码中获得更好的调试信息 并在优化的情况下编译应用程序
  • 在 Visual Studio 2008 上设置预调试事件

    我想在 Visual Studio 中开始调试程序之前运行一个任务 我每次调试程序时都需要运行此任务 因此构建后事件还不够好 我查看了设置的 调试 选项卡 但没有这样的选项 有什么办法可以做到这一点吗 你唯一可以尝试的 IMO 就是尝试Co
  • C - 找到极限之间的所有友好数字

    首先是定义 一对友好的数字由两个不同的整数组成 其中 第一个整数的除数之和等于第二个整数 并且 第二个整数的除数之和等于第一个整数 完美数是等于其自身约数之和的数 我想做的是制作一个程序 询问用户一个下限和一个上限 然后向他 她提供这两个限
  • Json.NET - 反序列化接口属性引发错误“类型是接口或抽象类,无法实例化”

    我有一个类 其属性是接口 public class Foo public int Number get set public ISomething Thing get set 尝试反序列化Foo使用 Json NET 的类给我一条错误消息
  • WPF TabControl,用C#代码更改TabItem的背景颜色

    嗨 我认为这是一个初学者的问题 我搜索了所有相关问题 但所有这些都由 xaml 回答 但是 我需要的是后台代码 我有一个 TabControl 我需要设置其项目的背景颜色 我需要在选择 取消选择和悬停时为项目设置不同的颜色 非常感谢你的帮助
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 如何衡量两个字符串之间的相似度? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 给定两个字符串text1 and text2 public SOMEUSABLERETURNTYPE Compare string t
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 如何在 VBA 中声明接受 XlfOper (LPXLOPER) 类型参数的函数?

    我在之前的回答里发现了问题 https stackoverflow com q 19325258 159684一种无需注册即可调用 C xll 中定义的函数的方法 我之前使用 XLW 提供的注册基础结构 并且使用 XlfOper 类型在 V
  • C++ 复制初始化和直接初始化,奇怪的情况

    在继续阅读本文之前 请阅读在 C 中 复制初始化和直接初始化之间有区别吗 https stackoverflow com questions 1051379 is there a difference in c between copy i
  • 需要哪个版本的 Visual C++ 运行时库?

    microsoft 的最新 vcredist 2010 版 是否包含以前的版本 2008 SP1 和 2005 SP1 还是我需要安装全部 3 个版本 谢谢 你需要所有这些
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 为什么我收到“找不到编译动态表达式所需的一种或多种类型。”?

    我有一个已更新的项目 NET 3 5 MVC v2 到 NET 4 0 MVC v3 当我尝试使用或设置时编译出现错误 ViewBag Title财产 找不到编译动态表达式所需的一种或多种类型 您是否缺少对 Microsoft CSharp
  • x86 上未对齐的指针

    有人可以提供一个示例 将指针从一种类型转换为另一种类型由于未对齐而失败吗 在评论中这个答案 https stackoverflow com questions 544928 reading integer size bytes from a
  • 如何使用 std::string 将所有出现的一个字符替换为两个字符?

    有没有一种简单的方法来替换所有出现的 in a std string with 转义 a 中的所有斜杠std string 完成此操作的最简单方法可能是boost字符串算法库 http www boost org doc libs 1 46
  • C 中的异或运算符

    在进行按位操作时 我在确定何时使用 XOR 运算符时遇到一些困难 按位与和或非常简单 当您想要屏蔽位时 请使用按位 AND 常见用例是 IP 寻址和子网掩码 当您想要打开位时 请使用包含或 然而 XOR 总是让我明白 我觉得如果在面试中被问
  • 如何在 C++ BOOST 中像图形一样加载 TIFF 图像

    我想要加载一个 tiff 图像 带有带有浮点值的像素的 GEOTIFF 例如 boost C 中的图形 我是 C 的新手 我的目标是使用从源 A 到目标 B 的双向 Dijkstra 来获得更高的性能 Boost GIL load tiif
  • 使用 libcurl 检查 SFTP 站点上是否存在文件

    我使用 C 和 libcurl 进行 SFTP FTPS 传输 在上传文件之前 我需要检查文件是否存在而不实际下载它 如果该文件不存在 我会遇到以下问题 set up curlhandle for the public private ke

随机推荐