实体框架代码优先:使用注释设置一对一外键关联

2024-01-02

我有以下两个实体,我试图使用外键关联来关联(一对一)。

public class StandardRack {
    public int Id {get;set}
    public StandardRelay StandardRelay {get;set} 
}

public class StandardRelay {
    public int Id {get;set} 

    public int StandardRack_Id {get;set;}
    [Required][ForeignKey("StandardRack_Id")]
    public StandardRack StandardRack { get; set; }
}

这会抛出 ModelValidationException。为什么无法配置这种看似简单的一对一双向关系的任何想法。

Edit:

这是例外情况:

System.Data.Entity.ModelConfiguration.ModelValidationException 被捕获 消息=在模型生成过程中检测到一个或多个验证错误:

System.Data.Edm.EdmAssociationEnd::多重性在关系“StandardRelay_StandardRack”中的角色“StandardRelay_StandardRack_Source”中无效。由于从属角色属性不是关键属性,因此从属角色的重数上限必须为“*”。

来源=EntityFramework 堆栈跟踪: 在 System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateAndSerializeCsdl(EdmModel 模型,XmlWriter 编写器) 在 System.Data.Entity.ModelConfiguration.Edm.EdmModelExtensions.ValidateCsdl(EdmModel 模型) 在 System.Data.Entity.DbModelBuilder.Build(DbProviderManifest 提供程序清单,DbProviderInfo 提供程序信息) 在 System.Data.Entity.DbModelBuilder.Build(DbConnection 提供者连接) 在System.Data.Entity.Internal.LazyInternalContext.CreateModel(LazyInternalContext内部上下文) 在 System.Data.Entity.Internal.RetryLazy2.GetValue(TInput input) at System.Data.Entity.Internal.LazyInternalContext.InitializeContext() at System.Data.Entity.Internal.InternalContext.Initialize() at System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) at System.Data.Entity.Internal.Linq.InternalSet1.初始化() 在 System.Data.Entity.Internal.Linq.InternalSet1.GetEnumerator() at System.Data.Entity.Infrastructure.DbQuery1.System.Collections.Generic.IEnumerable.GetEnumerator() 在 System.Collections.Generic.List1..ctor(IEnumerable1 集) 在 System.Linq.Enumerable.ToList[TSource](IEnumerable`1 源) 在 D:\RailwayProjects\RelayAnalysis\TestApplication\MainWindow.xaml.cs 中的 TestApplication.MainWindow.Window_Loaded(Object sender, RoutedEventArgs e) 处:第 33 行 内部异常:


实体框架不支持一对一的外键关联。您必须删除外键并使用共享主键(依赖项的主键同时也是其对主体的外键):

public class StandardRack {
    public int Id {get;set}
    public StandardRelay StandardRelay {get;set} 
}

public class StandardRelay {
    public int Id {get;set} 
    public StandardRack StandardRack { get; set; }
}

Fluent API 中的映射:

modelBuilder.Entity<StandardRack>()
    .HasOptional(rack => rack.StandardRelay)
    .WithRequired(relay => relay.StandardRack);

(我在这里保证StandardRack有一个可选的继电器。)

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

实体框架代码优先:使用注释设置一对一外键关联 的相关文章

随机推荐

  • 在 AVPlayerLayer 和 AVPlayerViewController 中同步视频

    我正在与AVPlayer使用 a 显示正在播放的视频URL在里面 它有两个部分 1 首先 我嵌入了AVPlayer到视图的子层使用AVPlayerLayer i e var player AVPlayer func configure le
  • Spring分布式事务涉及RMI调用可能吗?

    背景 我有 Spring 客户端应用程序 它使用 RMI 向两台服务器提供服务 在客户端中 我将一个实体保存到数据库 简单 并使用该实体的详细信息对两个服务器进行 rmi 调用 我在服务器上使用 Spring 3 0 2 客户端是一个简单的
  • 绑定后滚动到长列表选择器中的特定项目

    我正在使用 Longlistselector 来绑定聊天消息 绑定后我需要显示最后一条消息 但默认情况下它会出现在顶部消息中 我尝试滚动到最后一项 ScrollTo lastmessage 但它不起作用 任何人都可以提供解决方案 其他人通过
  • domReady 与 Ready - 迁移到 Polymer 1.0

    在Polymer0 5中 我有以下代码 模板 div class scroll div class content div div
  • Oracle中如何获取主键列?

    我需要获取主键列的名称 在输入中 我只有表名 SELECT cols table name cols column name cols position cons status cons owner FROM all constraints
  • 如何在 python 中输出 utf-8 字符串列表?

    嗯 字符编码和解码有时让我很沮丧 所以我们知道u u4f60 u597d is the utf 8的编码你好 gt gt gt print hellolist u u4f60 u597d gt gt gt print hellolist 0
  • 宏运行时错误“9”:下标超出范围

    我在网上找到了一个用密码保护工作表的宏 它工作正常 但是当我保存文件时 我收到消息 运行时错误 9 订阅超出范围 我以前从未编程或使用过 Visual Basic 需要一些帮助 谢谢 宏是 Private Sub Workbook Befo
  • 使用 SqlDataReader 获取二进制数据

    我有一个名为 Blob Id int Data Image 的表 我需要使用 SqlDataReader 来获取该图像数据 请注意 我不想将 Response Binarywrite 数据发送到浏览器 我只需要该二进制数据作为 byte 即
  • 图表宽度问题

    我正在开发一个项目 该项目的设计与fiddle http jsfiddle net uBUv9 1 左侧的侧边导航带有切换选项 图表位于右侧 发生的事情是图表响应能力非常棒 并且当我调整窗口大小时它是完美的 但在我的项目中 我有一个切换按钮
  • 通过 USB 安装应用程序:设备暂时受到限制

    当我打开通过 USB 安装在开发者模式下 它会弹出 toast 消息说该设备暂时受到限制 然后关闭设置 有什么解决办法吗 我搜遍了诸如关闭MIUI优化之类的办法还是不行 我无法通过Android Studio以这种方式调试我的应用程序 通过
  • 在 Android 中更改 Flutter 的表情符号字体

    Android 有可怕的表情符号 我可以在 Android 版 Flutter 中使用 Apple 的表情符号字体 就像 Telegram 和 WhatsApp 过去使用的那样 吗 编辑 我的第一个猜测是添加字体 但由于我不想更改所有其他字
  • 使用 javax.lang.model 或 ANTLR JavaParser 获取 Java 源代码信息的示例/教程

    我想为简单的 Java 逻辑创建一个自动的类似流程图的可视化 为此我需要解析 Java 源代码 我有 2 个候选者 ANTLR http www antlr org and javax lang model http download or
  • 父级上的 maxHeight 和 Overflow-y:在其子级之一上滚动

    可以设置maxHeight在父母身上并且有one特定子项 1 占用尽可能多的可用空间并且 2 有overflow y scroll对那个孩子下定决心 div style max height 200px div Header that I
  • 使用 Rails 3.1 预编译资源

    我正在推动 Heroku 的更改 我得到 耙子中止 无法连接到服务器 连接被拒绝服务器是否在主机 127 0 0 1 上运行并接受端口 5432 上的 TCP IP 连接 当我查阅 Heroku 文档时Here http devcenter
  • Android libgdx 大屏幕分辨率

    我如何支持 制定算法 libgdx以支持多种屏幕分辨率 我使用带有如下参数的 if 语句使我的应用程序在 HTC Tattoo 上运行 if Gdx input getX 40 让它在更大的屏幕上运行的好算法是什么 我尝试了这个但没有任何结
  • 当两个对等点同时将更改推送到同一个远程时 git 如何工作

    我是 git 的新手 我通常使用具有中心存储库的 P4 而 git 是分布式 VCS 我对当两个对等点同时将更改推送到同一个远程时 git 如何工作感兴趣 假设每个对等点在推送之前解决了所有冲突 我估计如果git报冲突的话后面的会被拒绝吧
  • 将变量从 jQuery 传递到 PHP

    我创建了一个脚本来读取哈希值 www website com hash 并将哈希值传递给 php 这alert hash 弹出哈希值 但哈希值没有在 post 变量中回显 知道为什么吗 jQuery 页面 Community php 页面
  • 如何在 IIS 环境中以编程方式注册 WCF 服务

    假设我们有 2 个具有以下布局的项目 Project web global asax 我想到了这个注册目的地 例如void Application Start System Object sender System EventArgs e
  • NGINX SSL 证书权限 SSL 错误:0200100D:系统

    使用 LetsEncrypts 免费 SSL 证书时 NGINX 服务器中出现以下错误 2016 06 23 19 53 13 警告 5013 0 仅当主进程以超级用户权限运行时 user 指令才有意义 在 etc nginx nginx
  • 实体框架代码优先:使用注释设置一对一外键关联

    我有以下两个实体 我试图使用外键关联来关联 一对一 public class StandardRack public int Id get set public StandardRelay StandardRelay get set pub