迁移期间未找到实体框架外键

2023-12-30

在将键和外键添加到数据模型后设置迁移时,我遇到意外错误。我使用的是 VS2013 Express,带有 .NET Framework 4.5。

为实体框架创建数据模型时,由于类之间的关系键不是惯例所期望的,因此我使用数据注释,如微软数据开发中心 https://msdn.microsoft.com/en-us/data/jj591583#Relationships。这是类代码:

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace BacklogTracker.Models
{
    public class WorkOrder
    {
        [Key]
        public string woNum { get; set; }
        public string woClosingStatus { get; set; }
        [ForeignKey("ID")]
        public virtual ICollection<Note> woNotes { get; set; }
        [ForeignKey("machSN")]
        public virtual Machine woMachine { get; set; }
        [ForeignKey("ID")]
        public virtual ICollection<Segment> woSegments { get; set; }
    }

    public class Machine
    {
        [Key]
        public string machSN { get; set; }
        public string machLocation { get; set; }
        public string machModel { get; set; }
    }
    public class Segment
    {
        [Key]
        public int ID { get; set; }
        public uint segNum { get; set; }
        public string segRepair { get; set; }
        [ForeignKey("ID")]
        public virtual ICollection<Note> segNotes { get; set; }
    }
    public class Note
    {
        [Key]
        public int ID { get; set; }
        public DateTime notetimestamp { get; set; }
        public string notestring { get; set; }
    }

}

但是,当我尝试通过执行更新模型后执行迁移时enable-migrations在包管理器控制台中,我收到以下错误:

类型上属性“woMachine”的ForeignKeyAttribute “BacklogTracker.Models.WorkOrder”无效。外键名称 在依赖类型上找不到“machSN” 'BacklogTracker.Models.WorkOrder'。名称值应该是逗号 外键属性名称的分隔列表。

为什么是我的foreign key name 'machSN'没有被发现?


我认为你的模型有一些错误。默认代码优先约定ForeignKey关系预计已在从属端声明了外键属性(WorkOrder)与主体端的主键属性匹配(Machine)。他们不一定有相同的名字,检查一下link http://www.entityframeworktutorial.net/code-first/foreignkey-dataannotations-attribute-in-code-first.aspx。因此,声明一个名为machSN在你的WorkOrder class:

public class WorkOrder
{
    [Key]
    public string woNum { get; set; }
    public string woClosingStatus { get; set; }

    public virtual ICollection<Note> woNotes { get; set; }

    public string machSN { get; set; }
    [ForeignKey("machSN")]
    public virtual Machine woMachine { get; set; }

    public virtual ICollection<Segment> woSegments { get; set; }
}

您可以在以下位置找到其他错误woNotes and woSegments导航属性。在一对多关系的这一侧,您不声明 FK,在另一侧,在Note and Segment类,例如:

public class Note
{
    [Key]
    public int ID { get; set; }
    public DateTime notetimestamp { get; set; }
    public string notestring { get; set; }

    [ForeignKey("Order)]
    public string woNum { get; set; }
    public virtual WorkOrder Order{get;set;}
}

也删除SegmentForeignKey属性超过segNotes导航属性的原因与之前解释的相同。

public class Segment
{
    [Key]
    public int ID { get; set; }
    public uint segNum { get; set; }
    public string segRepair { get; set; }
    public virtual ICollection<Note> segNotes { get; set; }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

迁移期间未找到实体框架外键 的相关文章

随机推荐

  • 奇怪的 std::bad_alloc

    据我所知 抛出 std bad alloc 的原因有以下三个 该进程请求的内存超过了可以提供的内存 地址空间过于碎片化 无法满足对大块连续内存的请求 堆管理数据结构已损坏 我们的代码遇到了 std bad alloc 但上述原因似乎都不适用
  • 在 symfony 4 中使用未定义常量 XML_PI_NODE

    我在 php7 2 中遇到此错误 我正在使用 symfony 4 Warning Use of undefined constant XML PI NODE assumed XML PI NODE this will throw an Er
  • 使用 Pester 测试强制参数

    我正在尝试找出如何对缺少的参数进行 Pester 测试 查找 Waldo Tests ps1 here Split Path Parent MyInvocation MyCommand Path sut Split Path Leaf My
  • 检测 iPhone/iPod Touch 配件

    是否可以检测 iPod Touch iPhone 是否连接了耳机或其他配件 我正在构建一个需要麦克风的应用程序 并且需要知道 iSomething 是否已连接 无论是通过底座连接还是使用耳机端口 例如使用 Apple 的内联耳机 麦克风配件
  • Firefox 17 中的 UniversalXPConnect 权限错误

    我有一个小型 Web JS 可以将一些表单数据复制到 iframe 或从 iframe 插入一些表单数据 但它在 Firefox 17 中不起作用 我正在使用以下代码 netscape security PrivilegeManager e
  • Redux 中实际如何使用状态不变性?

    我试图了解 Redux 中实际上 如果有的话 如何使用不变性 我发现的每个教程 文章 文档都指出 reducer 永远不应该更改状态对象 而是创建已更改数据的新副本 即 reducers 必须是纯函数 我理解这一点 但我找不到任何地方解释该
  • 在 C# 中将短[]数组写入文件的最佳方法是什么?

    我有一组短裤 short 我需要将其写入文件 最快的方法是什么 使用二进制编写器 static void WriteShorts short values string path using FileStream fs new FileSt
  • 使用 N Grams 在 solr 中进行建议(自动完成)搜索(建议组件的一种排序规则)

    我正在使用 EdgeNGrams 使用 solr 进行自动完成搜索 我使用 solr 3 3 我想使用建议器中的排序规则作为多术语搜索的自动完成解决方案 不幸的是 建议器仅返回多术语搜索的一种排序规则 如果用户正在搜索员工姓名 则应应用自动
  • Java 和泛型

    我是java新手 所以如果我完全搞错了 我很抱歉 我正在尝试编写一个通用 在英语意义上 数据访问类 例如我目前有 public class DA
  • git 托管服务对“git 命名空间”有哪些支持

    Git 命名空间 https git scm com docs gitnamespaces允许单个存储库的分区和共享 这可以用作版本控制的基础 有人可以向我提供以下平台对此功能提供哪些支持的信息 Gitlab Github 位桶 我的研究没
  • 使用 libcurl 固定 SSL 证书

    我想知道这个示例是否足以通过 libcurl 提供证书固定 http curl haxx se libcurl c cacertinmem html http curl haxx se libcurl c cacertinmem html
  • 使用文本缩放按钮中的drawableLeft

    我有一个带有文本的按钮 左侧有一个可绘制的按钮 有什么方法可以使可绘制比例达到适当的尺寸 填充按钮的高度 同时保持其纵横比 我的布局的相关摘录
  • 如何在 Doorkeeper::TokenController 上使用 before_action

    我在使用 Doorkeeper TokensController 时遇到问题 我想在请求访问令牌之前执行一些代码 无论是否创建 我都想记录它 使用before action 默认路由是POST oauth token Doorkeeper
  • 返回字符串及其 .c_str() 的生命周期[重复]

    这个问题在这里已经有答案了 我遇到过这种模式的多个实例 仅使用 boost filesystem 作为示例 boost filesystem path path someFunctionTakingCStrings path string
  • 如果我已经在使用 Modernizr,我还需要 HTML5 Shiv 吗?

    1 如果我已经在使用 Modernizr 我还需要 HTML5 Shiv 来启用 IE 的 HTML5 标签支持吗 2 HTML5 Shiv 仅适用于 IE 还是适用于所有不支持本机 HTML 5 的浏览器 喜欢旧版本的 Firefox S
  • Slick 3.0 在数据库驱动程序级别是反应式/异步的吗?适用于哪些数据库?

    Slick 历来依赖于 JDBC 驱动程序 该驱动程序在内部阻止等待套接字 I O 以响应查询 每个未完成的数据库调用都需要一个线程在套接字上阻塞 因此 它并不是像 ReactiveMongo postgresql async 和 mysq
  • nhibernate动态绑定一个类

    我读了本文 http www mattfreeman co uk 2009 01 nhibernate 21 trunk entity name some inheritance and dynamic component 并且正在寻找一种
  • 使用正文启动消息传递应用程序

    我有这个代码来打开消息 我想添加正文 Intent i6 new Intent Intent ACTION VIEW Uri parse sms 9986377561 startActivity i6 添加正文 正文 测试文本 Intent
  • 在 ToString() 之前检查 null

    这是场景 if entry Properties something Value null attribs something entry Properties something Value ToString 虽然有效且工作正常 但对我来
  • 迁移期间未找到实体框架外键

    在将键和外键添加到数据模型后设置迁移时 我遇到意外错误 我使用的是 VS2013 Express 带有 NET Framework 4 5 为实体框架创建数据模型时 由于类之间的关系键不是惯例所期望的 因此我使用数据注释 如微软数据开发中心