如何使用 EF6 Code First 将外键属性公开给具有导航属性的现有实体

2023-12-09

我有一个已经与底层数据库一起使用的实体,并且它是使用可选实体(1:0..1)的导航属性创建的。因此,按照默认约定,EF 在数据库中创建了一个可为空的外键列,并根据该约定为其指定了带下划线的“MyProp_Id”名称。

现在,我希望将该外键公开为实体的属性,因为这将使某些场景对我来说更容易。我不想重命名/更改数据库中的基础外键列(MyProp_Id 列)。事实上,不应该有任何底层数据库更新,我只是想在实体上公开该 FK。用于澄清的代码示例:

public class MyEntityA 
{
    public long Id { get; set; }

    //public long? MyOptionalEntityB_Id { get; set; }  <== this is what I am trying to add
    //public long? MyOptionalEntityBId { get; set; }  <== this didn't work either

    public MyEntityB MyOptionalEntityB { get; set; }

}

我尝试过简单地将“MyOptionalEntity_Id”属性添加为实体上的属性,希望 EF 能够“自动”看到,因为名称相同,所以它会进行映射并感到高兴。没有骰子。

然后我尝试将我的属性命名为“MyOptionalEntityId”(无下划线),但仍然没有骰子。

然后我尝试添加显式映射配置来表示:

this.Property(p => p.MyOptionalEntityId).HasColumnName("MyOptionalEntity_Id");

NO DICE

有没有办法做到这一点?这是否清楚且有意义?


尝试添加外键属性.

public long? MyOptionalEntityB_Id { get; set; }
[ForeignKey("MyOptionalEntityB_Id")]
public MyEntityB MyOptionalEntityB { get; set; }

或者使用流畅的API.

 modelBuilder.Entity<MyEntityA >()
    .HasOptional(x => x.MyOptionalEntityB)
    .WithMany().HasForeignKey(x => x.MyOptionalEntityB_Id);
          // ^^^ -> if MyEntityB has collection of MyEntityA, mention it
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 EF6 Code First 将外键属性公开给具有导航属性的现有实体 的相关文章

  • 没有 Unicode 字节顺序标记。无法切换到 Unicode

    我正在使用 XSD 编写 XML 验证器 下面是我所做的 但是当验证器到达该线时while list Read 它给了我错误 没有 Unicode 字节顺序标记 无法切换到 Unicode 有人可以帮我解决吗 public class Va
  • Android NDK C++“wstring”支持

    我有用 C 编写的源代码 lib 现在我想在 Android NDK 项目 NDK 6 中编译并使用相同的源代码 lib 我能够编译大多数 C 文件 除了基于 std wstring 的功能 在 Application mk 中 当我指定时
  • 关闭 XDOCUMENT 的实例

    我收到这个错误 该进程无法访问文件 C test Person xml 因为它是 被另一个进程使用 IOException 未处理 保存文件内容后如何关闭 xml 文件的实例 using System using System Collec
  • 通过引用传递时取消引用指针

    当通过引用传递给函数时取消引用指针时会发生什么 这是一个简单的例子 int returnSame int example return example int main int inum 3 int pinum inum std cout
  • F10键没被抓住

    I have a Windows Form and there overriden ProcessCmdKey However this works with all of the F Keys except for F10 I am tr
  • 将成员函数作为参数传递/c++

    我想用 C 实现一个类b可以通过封装该迭代器类型的成员集进行某种迭代 喜欢 b object for each x do function f so 函数 f会得到每个人的x成员并做任何事情 比方说 void function f x me
  • 抽象类或接口。哪种方式是正确的?

    有两种方法可以选择抽象类或接口 微软解决方案和Oracle解决方案 微软 设计指南 请使用抽象 在 Visual Basic 中为 MustInherit 类而不是接口来将协定与实现分离 http msdn microsoft com en
  • 线程安全的 C++ 堆栈

    我是 C 新手 正在编写一个多线程应用程序 不同的编写者将对象推入堆栈 读者将它们从堆栈中拉出 或至少将指针推入对象 C 中是否有任何内置结构可以在不添加锁定代码等的情况下处理此问题 如果没有 那么 Boost 库呢 EDIT 你好 感谢您
  • 更改其他页面的主窗口内容

    在 WPF 应用程序的主窗口中 我有一个 Badged 元素 来自材料设计 这是我的代码
  • 如何将字符串转换为 Indian Money 格式?

    我正在尝试将字符串转换为印度货币格式 例如如果输入为 1234567 则输出应为 12 34 567 我编写了以下代码 但它没有给出预期的输出 CultureInfo hindi new CultureInfo hi IN string t
  • 理解 C++11 中的 std::atomic::compare_exchange_weak()

    bool compare exchange weak T expected T val compare exchange weak 是 C 11 中提供的比较交换原语之一 它是weak即使对象的值等于 它也会返回 falseexpected
  • 有没有更好的方法来获取每个项目与谓词匹配的子序列?

    假设我有一个 IEnumerable 例如 2 1 42 0 9 6 5 3 8 我需要获得与谓词匹配的项目的 运行 例如 如果我的谓词是 bool isSmallerThanSix int number 我想得到以下输出 2 1 0 5
  • 将 bignum 类型结构转换为人类可读字符串的有效方法是什么?

    我有一点问题 为了增长我的 C 知识 我决定尝试实现一个基本的 bigint 库 bigint 结构的核心将是一个 32 位整数数组 选择它们是因为它们适合寄存器 这将允许我在数字之间进行操作 这些操作将在 64 位整数中溢出 这也将适合寄
  • 如何将 CSV 文件读入 .NET 数据表

    如何将 CSV 文件加载到System Data DataTable 根据CSV文件创建数据表 常规 ADO net 功能是否允许这样做 我一直在使用OleDb提供者 但是 如果您正在读取具有数值的行 但希望将它们视为文本 则会出现问题 但
  • 如何使用 ASP.NET Web 表单从代码隐藏中访问更新面板内的文本框、标签

    我在更新面板中定义了一些控件 它们绑定到中继器控件 我需要根据匿名字段隐藏和显示用户名和国家 地区 但问题是我无法以编程方式访问更新面板中定义的控件 我如何访问这些控件 我也在网上查找但找不到很多参考资料 下面是来自aspx页面和 cs页面
  • 将文本从文本文件添加到 PDF 文件[重复]

    这个问题在这里已经有答案了 这是我的代码 using FileStream msReport new FileStream pdfPath FileMode Create step 1 using Document pdfDoc new D
  • 如何从函数返回矩阵(二维数组)? (C)

    我创建了一个生成宾果板的函数 我想返回宾果板 正如我没想到的那样 它不起作用 这是函数 int generateBoard int board N M i j fillNum Boolean exists True initilize se
  • 如何确定给定方法可以抛出哪些异常?

    我的问题和这个真的一样 找出 C 中方法可能抛出的异常 https stackoverflow com questions 264747 finding out what exceptions a method might throw in
  • 如何检查 C# 中是否存在具有特定签名的方法?

    我想检查某些参数的方法是否已实现 在这种情况下 我有以下方法重载 public class Transformations public string TransformFrom string s return s public strin
  • 在 C# 中创建分部类

    我是一名学生 我不知道什么是partial class是 以下代码属于分部类 我自动创建了部分类 public partial class EGUI Form private OleDbConnection dbConn Connectio

随机推荐

  • Java 扫描器“倒带”

    我正在使用 Java Scanner 对象来解析文本文件 我需要扫描文件的一部分两次 出于性能原因 这样我就不必暂时存储其内容 因此 是否有一种方法可以将扫描仪 倒回 到特定的文件位置 或者 有没有办法克隆扫描仪 以便我可以独立使用每个实例
  • Haskell Double 除以 Int

    我有下面的代码 问题是我尝试划分Double by an Int factorial Int gt Int factorial 0 1 factorial e e factorial e 1 sumX Double gt Int gt Do
  • 在目标视图控制器 viewWillAppear 中检测向后/弹出导航[重复]

    这个问题在这里已经有答案了 有许多众所周知的解决方案用于检测视图控制器在向后导航过程中何时从屏幕上消失 由UINavigationController 即当视图控制器从导航堆栈中弹出时 换句话说 检测源视图控制器内的向后导航 相反 我需要检
  • 整数问题 Flex

    我对这段代码有疑问
  • 4xN 多米诺骨牌的组合数量

    我想找到 4 x N 区域 4 个单位宽度和 N 个单位高度 N 1 多米诺骨牌砖的可能不同组合的数量使用动态规划 多米诺骨牌的尺寸为 2x1 例如 对于水平和 对于垂直砖 Now 示例 4x1 两块多米诺骨牌叠在一起 4x2 砖块配置示例
  • 强制横向应用程序遇到困难

    我有两个应用程序 它们都强制用户在横向模式下使用 iPhone 以获得更宽的屏幕 而不是更高的屏幕 我发现的一件事是 我的第一个视图看起来不错 但所有其他视图都会将其子视图 UIButtons UIPicker UIViews 挤压到一侧或
  • 如何覆盖宽度属性?

    我怎样才能覆盖CSSwidth以便竞争widthHTML 属性定义了计算的大小 下面的示例以 500px 的宽度渲染 但我想要 100px 假设 css 规则无法更改 只是被更强的规则掩盖 编辑以澄清 我不想在内联或其他地方设置显式大小 i
  • 如何在 css 中使用@keyframes 进行交叉淡入淡出图像库?

    我有一个fiddle 小提琴A 其中 2 个图像 2 个图块 发生图像交叉淡入淡出图库 这是我使用过的 html css 片段 div class featured block style display flex a href https
  • 普通类型和匿名类型有什么区别?

    C 中的普通类型和匿名类型在编译过程和运行时内存管理方面有什么区别 匿名类型在某些方面是否比普通类型更加低效 From MSDN 匿名类型提供一种方便的方法来封装一组 将只读属性放入单个对象中 而无需首先 明确定义一个类型 类型名称由编译器
  • 使用 jQuery Validate 插件确保至少选中三个复选框之一

    使用 jQuery Validate 插件 我如何确保至少三个复选框之一已被选中 到目前为止 我能做的最好的事情就是使所有三个复选框成为必需的 这不是我想要的 我的代码如下 我尝试使用这个例子在 jQuery Validate 演示页面上
  • httr POST 请求正文中的数组

    这个curl调用可以在Digital Ocean上创建一个新的droplet curl X POST https api digitalocean com v2 droplets d name test3 region nyc2 size
  • mousePressed 中的 glReadPixels

    我试图在用户单击 JOGL 时获取像素的颜色 如果我将以下代码放入显示方法中 来自GLEventListener 效果很好 FloatBuffer buffer FloatBuffer allocate 4 gl glReadBuffer
  • 将 varchar 值“%”转换为数据类型 int 时转换失败

    我创建了一个过程并收到了这条消息 将 varchar 值 转换为数据类型 int 时转换失败 create procedure consultarEquipo id varchar 10 marca varchar 20 year int
  • Spring:获取 ManyToOne 实体时,参考实体 (OneToMany) 未显示在 JSON 中

    当我在 POSTMAN 中发送 GET 请求以获取所有子实体 城镇 时 父实体 省 不会显示在 JSON 响应中 这是我的控制器 RequestMapping value api v1 town method RequestMethod G
  • 从驱动程序创建进程

    有没有办法在Windows NT平台 XP W7 上从内核模式创建用户模式进程 编辑 我必须只安装驱动程序 这是该项目的具体情况 要创建有效的 win32 进程 驱动程序必须与 CSRSS 通信 完全未记录 因此 我最终对用户模式 APC
  • 优化 Postgres 对时间戳范围的查询

    我定义了下表和索引 CREATE TABLE ticket wid bigint NOT NULL DEFAULT nextval tickets id seq regclass eid bigint created timestamp w
  • 在 Clojure 中喜结良缘:没有(显式的、丑陋的)突变的循环引用?

    在我的回答中Clojure 理解示例我有一个处理自己的输出的函数 defn stream seed defn helper slow concat map str first slow seed lazy seq helper rest s
  • Google 地球 KML 中的文本叠加

    我想添加 KML 文件上次更新的日期 时间 以便在 Google 地球中显示为覆盖图 无论如何可以做到这一点吗 我会考虑更新 KML 文件中的文本 然后将其显示在谷歌地球中 非常感谢 一个技巧是使用谷歌图表API从文本动态创建图像并将其用作
  • C# MySQL 错误“列计数与第 1 行的值计数不匹配”

    Query SQL MySqlCommand command1 new MySqlCommand INSERT INTO Equipamento equipamento situacao modelo nr serie avaria est
  • 如何使用 EF6 Code First 将外键属性公开给具有导航属性的现有实体

    我有一个已经与底层数据库一起使用的实体 并且它是使用可选实体 1 0 1 的导航属性创建的 因此 按照默认约定 EF 在数据库中创建了一个可为空的外键列 并根据该约定为其指定了带下划线的 MyProp Id 名称 现在 我希望将该外键公开为