实体框架一对多 TPH 映射

2024-01-18

我使用与此类似的数据结构,其中动物类型是根据表中的鉴别器列确定的:

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

    public virtual ICollection<Pig> Pigs { get; set; }

    public virtual ICollection<Cow> Cows { get; set; }
}

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

    public int FarmId? { get; set; }

    public virtual Farm Farm { get; set; }

    public string Name { get; set; }
}

public class Pig : Animal {}
public class Cow : Animal {}

Mapping:

this.Map<Pig>(m => m.Requires("Type").HasValue((int) AnimalType.Pig));
this.Map<Cow>(m => m.Requires("Type").HasValue((int) AnimalType.Cow));

但我似乎无法绘制猪、牛和农场之间的关系。我已经尝试过这个FarmMap这会产生重复的列映射错误:

this.HasMany(t => t.Pigs)
    .WithOptional(t => t.Farm)
    .Map(m => m.MapKey("FarmId"));
this.HasMany(t => t.Cows)
    .WithOptional(t => t.Farm)
    .Map(m => m.MapKey("FarmId"));

从每只动物进行映射也不起作用,它会生成额外的列(例如。Farm_Id and Farm_Id1- 此外FarmId- 每种动物类型一个)。

this.HasOptional(t => t.Farm)
    .WithMany(t => t.Pigs)
    .HasForeignKey(d => d.FarmId)

将导航属性从Animal继承模型的模型会导致生成一个附加列 -FarmId1(所以比上面两个更接近我想要的!)

有什么办法可以实现这一点吗?


我不是 EF 专家,但从模型优先方法中我知道这将被映射为 Animal 的集合,然后您可以选择Farm.Animals.OfType<Pig>()

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

实体框架一对多 TPH 映射 的相关文章

  • 将 SQL Server varBinary 数据转换为字符串 C#

    我需要帮助弄清楚如何转换来自SQL服务器表列设置为varBinary 最大 转换为字符串以便将其显示在标签中 这是在C 我正在使用数据读取器 我可以使用以下方式提取数据 var BinaryString reader 1 我知道该列包含之前
  • 如何在 C# 中知道 PID 和 VID 来发现虚拟 COM 端口名称

    如果我知道 PID 和 VID 我会尝试找到查找 COM 端口名称的正确方法 到目前为止 我写了解决方法 但我不相信没有更优雅和正确的方法 顺便说一句 我知道我可以使用 REGEX 编写此代码只是为了测试解决方法 我知道还有很大的改进空间
  • is_integral 与 is_integer:其中之一是多余的吗?

    是积分 http en cppreference com w cpp types is integral and 是整数 http en cppreference com w cpp types numeric limits is inte
  • C# 测试活动的互联网连接。 Ping google.com

    C 2008 我正在使用此代码来测试互联网连接 因为我的应用程序必须登录到网络服务器 但是 如果用户互联网连接失败或电缆被拔出 我必须通知用户 Ping www google com to check if the user has a i
  • 动态选择和更新 LINQ 结果集中的列值

    我有一个场景 其中存在 LINQ 结果集 我使用了以下查询 var stockDetails from d in db BloodBanks where d bbUserName Session username ToString sele
  • C++ 和序列化:有什么方法可以进行某种内省吗?

    我读过一些例子维基百科 http en wikipedia org wiki Type introspection C 2B 2B但我正在寻找一些现实生活中的例子 如何使用内省 为什么 它有助于编写干净的代码 以及代码本身 例如 有没有办法
  • 计算复杂数组的abs()值的最快方法

    我想计算 C 或 C 中复杂数组元素的绝对值 最简单的方法是 for int i 0 i lt N i b i cabs a i 但对于大向量来说 速度会很慢 有没有办法加快速度 例如使用并行化 语言可以是 C 或 C 鉴于所有循环迭代都是
  • 在目标 VS 安装时,VSIX 扩展内部使用的 WPF-Log4Net 未输出日志

    当 Log4net 在 VSIX 扩展中使用并安装在另一个目标 VS 上时 它不会记录日志 我有一个 WPF 解决方案 我下载了 log4net dll 添加了 log4net config 并将 复制到输出目录 值设置为 始终复制 log
  • 修剪 UIImage 边框

    这是我想要修剪的图像的示例 我想去掉图像周围的边框 在本例中是顶部和底部的黑条 我在Github上找到了一个库 CKImageAdditions https github com cmkilger CKImageAdditions 但是它似
  • 以编程方式运行 T4 文本模板

    有没有一种方法可以通过代码以编程方式运行 T4 文本模板 我正在制作一种自定义域特定语言 我希望相关的文本模板在用户每次保存时运行 目前 这就是我在 DSL 模型中所做的事情 protected override void OnDocume
  • 试图使用加密来混淆我的项目打破了它

    我试图尝试不同的混淆选项 为了做到这一点 我首先尝试了加密货币 以下是我遵循的步骤 打开加密向导并选择一些选项 选择我的解决方案文件 完成向导后 我看到有些 Dll 被很好地混淆了 但我的项目现在无法构建 我注意到的两件事是 我的文件夹中有
  • 我可以在 C++ 中重写非虚函数吗

    我想知道我可以重写 C 中的非虚函数吗 因为我在使用 C 时发现了这个问题override关键字我的代码如下 class A public void say cout lt lt From A n class B public A publ
  • 如何使用 ProtoGen 从 proto 文件生成结构

    我们一直在使用 protobuf net ProtoGen 从 proto 文件生成 C cs 文件 我们希望代替类来生成结构 例如 DataContract public struct Entity1 ProtoMember 1 publ
  • 为什么 httpRuntime targetFramework="4.5" 禁止抓取 .ASPXAUTH cookie?

    当我的 web config 具有以下 httpRuntime 时 我的控制器无法获取 cookie ASPXAUTH 它似乎能够获取任何其他 cookie 无论带或不带句点前缀 如果我删除下面的行 它就可以正常工作
  • Nuget - 对象引用未设置为对象的实例

    我在 vs 2015 中遇到了 nuget 包管理器的问题 像Unity这样的一些包已经安装没有问题了 某些软件包 例如 EF 在安装时出现问题 像 Automapper 这样的一些软件包也有同样的问题 但是当我安装这个软件包的另一个版本时
  • 为什么我无法调试动态加载的程序集?

    我正在开发一个 Web API 项目 该项目使用内部模拟框架 允许拦截和修改来自控制器的响应 它使用 MEF 加载包含某些先决条件匹配时执行的代码的程序集 我知道这是正常工作的 因为我可以在响应中看到模拟已被执行 但由于某种原因我无法调试动
  • 为什么必须通过 this 指针访问模板基类成员?

    如果下面的类不是模板 我可以简单地拥有x in the derived班级 但是 通过下面的代码 我have to use this gt x Why template
  • 如何在asp.net core 6中注入IConfiguration

    web api 应用程序中不再有 Startup cs 我们以前可以注入IConfiguration进入那个Startup class public class Startup public Startup IConfiguration c
  • 将多个 Blob 输入传递到 QueueTrigger Azure 函数的最佳方法

    问题 触发后 生成 3 个 XML 文件 完成后将它们通过 ftp 传输到站点 目前的方法 我有一个 HTTP 触发器 Azure 函数 运行时将构造 3 个 XML 文件并将它们保存到 Azure 存储 Blob 容器中 由于有多个输出
  • 返回 ICollection 而不是 List 的真正优势是什么? [复制]

    这个问题在这里已经有答案了 我读过几篇博客文章 提到对于公共 API 我们应该始终返回 ICollection 或 IEnumerable 而不是 List 返回 ICollection 而不是 List 的真正优势是什么 Thanks 复

随机推荐

  • Nativebase - 单击输入时如何显示日期选择器?

    我在用本地库成分 我有Form具有以下字段
  • 在 onTouch (Android) 上获取颜色(像素)信息

    有没有办法获取像素 x y 的颜色并检查其是否为红色 如果是红色则发送触摸事件 我希望它在后台运行 并且它应该始终检查该像素 x y 的颜色 一旦它变成红色 就应该模拟触摸事件 您可以从以下示例中获取值 final Bitmap bitma
  • 在 BigQuery 中附加时忽略重复记录

    我们正在将数据从 MySql 写入 BigQuery 我们设定了一些指标 例如 插入 如果是第一次添加记录 则在指示符字段中用 I 保存 更新 如果记录有一些更新的数据 则在 指示符 字段中将其保存为 U 如果未更改则忽略重复记录 但在 更
  • Winnovative - CSS 网格未正确转换

    我正在使用 Winnovative 库将一些 HTML 转换为 PDF 由于这对于很多场景都很有效 但 CSS 网格似乎存在问题 由于我无法分享太多规格 但我可以分享这些显示 HTML 部分和 PDF 中转换结果的图像 HTML eleme
  • 在 WCF 中,我的 UriTemplate 的文字段中可以有通配符吗?

    我正在使用 Net 4 0 编写 RESTful WCF 服务 我想要以下两个网址 root document ids fields fields root externaldocument ids fields fields 映射到相同的
  • applicationContext.xml 中的 beans 声明

    我有一个关于类声明的问题应用程序上下文 xml In 应用程序上下文 xml我们需要指定应用程序中的所有类吗 例如 在我的小型网络应用程序中 我有一个Entity class Service类和DAO班级 所以目前它被定义为
  • 找出 Google Cloud SDK 的安装位置

    我需要在以下位置添加 Google Cloud SDKPATH 所以我需要安装位置的路径 有没有gcloud 哪个命令给我这个信息 如果不是 我必须通过符号链接which gcloud etc 对于这个问题有更清洁的解决方案吗 以下命令将为
  • 有没有办法在html中自动播放音频?

    我想在打开网站时立即在网站中自动播放音频 但这不起作用
  • Python:排序的文件列表

    我使用 os path 从目录生成文件列表 我正在通过 Tkinter 从中生成一个照片库 然而排序是完全随机的 我没有看到目录中显示的照片顺序背后有更大的逻辑 当我打印列表时 它也是随机的 如何更改列表的顺序 按文件名或修改日期从该片段中
  • 具有 Runnable 类的 java 命令模式示例:接收器是否丢失?

    From Java 核心库中 GoF 设计模式的示例 https stackoverflow com questions 1673841 examples of gof design patterns in javas core libra
  • 增加 proxy_send_timeout 和 proxy_read_timeout ingress nginx

    我在 GKE 上运行部署 using quay io kubernetes ingress controller nginx ingress controller 0 12 0图像作为 nginx ingress controller 我正
  • Rscript 使用 renv 环境

    如何使用执行命令RScript myfile R这样它就使用它所在的项目 目录的 renv 环境 而不是我的默认环境 有几种方法 确保您的工作目录设置为您的根目录renv项目 并且 renv 项目的自动加载器处于活动状态 您可以通过调用来设
  • setprop libc.debug.malloc = 1 不起作用

    我尝试使用 setprop libc debug malloc 1 来找出泄漏 我制作了一个演示程序并在其中引入了内存泄漏 但上述标志无法检测到此泄漏 我尝试了以下命令 adb shell setprop libc debug malloc
  • 初始化 CUDA 中的设备数组

    如何初始化使用分配的设备数组cudaMalloc I tried cudaMemset 但它无法初始化除0 code 对于 cudaMemset 如下所示 其中值初始化为 5 cudaMemset devPtr value number b
  • 在方法之间传递变量?

    所以我想为大学编写一个简单的java程序 而我在java方面完全是新手 编译时 我在 printreciept 方法中不断收到错误 错误 找不到符号 我知道这就像无法访问 main 中的变量一样 有人可以帮忙吗 我知道如果我修复它 我可能会
  • 使用嵌入式谷歌表单绕过 CORS

    我正在尝试通过嵌入式表单将表单数据发送到谷歌 我找到了这个post https stackoverflow com questions 40560853 how to use google forms without iframe这似乎回答
  • 使用 PHP 中的 LAME 将 WAV 转换为 MP3

    我有 WAV 数据 想使用 PHP 脚本将其即时转换为 MP3 WAV 文件源自脚本 因此它最初并不是一个文件 我可以运行这样的东西 exec lame cbr b 32k in wav out mp3 但这需要我首先将 in wav 写入
  • 检查事件是否已存在

    我有一个数据网格加载行事件 gridObj LoadingRow new EventHandler
  • Symfony3 JWT 与 LexikJWTAuthenticationBundle 在预检选项上返回 404

    描述 我正在与LexikJWTAuthenticationBundle https github com lexik LexikJWTAuthenticationBundle并尝试使用从我的 Ionic2 应用程序发送的凭据生成 JWT 令
  • 实体框架一对多 TPH 映射

    我使用与此类似的数据结构 其中动物类型是根据表中的鉴别器列确定的 public class Farm public int Id get set public virtual ICollection