EF4 仅代码映射继承

2024-04-08

我有以下型号,我想要ShiftRequest and MissionRequest在数据库中有一个表。

    public class RequestBase
    {
        public int Id { get; set; }
        public DateTime? RequestDate { get; set; }
        public int UserId { get; set; }

        public virtual ICollection<Notification> Notifications { get; set; }

    }

    public class ShiftRequest : RequestBase
    {
        public virtual Column Column { get; set; }

    }

    public class MissionRequest : RequestBase
    {
        public virtual Mission Mission { get; set; }
    }

我已经尝试在override void OnModelCreating(ModelBuilder modelBuilder)方法但只有一种RequestBases表已创建:

modelBuilder.Entity<ShiftRequest>().MapSingleType().ToTable("dbo.ShiftRequests");
modelBuilder.Entity<MissionRequest>().MapSingleType().ToTable("dbo.MissionRequest");

我究竟做错了什么?

EDIT

Column and Mission我的模型中也有实体,可以接受吗?


检查此中有关 TPH 的部分article http://blogs.msdn.com/b/efdesign/archive/2009/10/12/code-only-further-enhancements.aspx。如果任务和列是复杂类型,您还可以在那里找到如何映射它们。通常,您必须使用 MapHiearchy 和 Case 方法而不是 MapSingleType。

Edit:

这是示例:

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.ModelConfiguration;


namespace EFTest
{
    public class RequestBase
    {
        public int Id { get; set; }
        public DateTime? RequestedDate { get; set; }
        public int UserId { get; set; }
    }

    public class Mission
    {
        public int Id { get; set; }
        public string Name { get; set; }

        public virtual ICollection<MissionRequest> MissionRequests { get; set; }
    }

    public class Column
    {
        public string Name { get; set; }
    }

    public class MissionRequest : RequestBase
    {
        public virtual Mission Mission { get; set; }
    }

    public class ShiftRequest : RequestBase
    {
        public Column Column { get; set; }
    }

    public class TestContext : DbContext
    {
        public DbSet<RequestBase> Requests { get; set; }
        public DbSet<Mission> Missions { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.ContainerName = "EFTest";
            modelBuilder.IncludeMetadataInDatabase = false;

            // Example of complex type mapping. First you have to define 
            // complex type. Than you can access type properties in  
            // MapHiearchy.
            var columnType = modelBuilder.ComplexType<Column>();
            columnType.Property(c => c.Name).HasMaxLength(50);

            modelBuilder.Entity<Mission>()
                .Property(m => m.Id)
                .IsIdentity();

            modelBuilder.Entity<Mission>()
                .HasKey(m => m.Id)
                .MapSingleType(m => new { m.Id, m.Name })
                .ToTable("dbo.Missions");

            modelBuilder.Entity<RequestBase>()
                .Property(r => r.Id)
                .IsIdentity();

            // You map multiple entities to single table. You have to  
            // add some discriminator to differ entity type in the table. 
            modelBuilder.Entity<RequestBase>()
                .HasKey(r => r.Id)
                .MapHierarchy()
                .Case<RequestBase>(r => new { r.Id, r.RequestedDate, r.UserId, Discriminator = 0 })
                .Case<MissionRequest>(m => new { MissionId = m.Mission.Id, Discriminator = 1 })
                .Case<ShiftRequest>(s => new { ColumnName = s.Column.Name, Discriminator = 2 })
                .ToTable("dbo.Requests");
        }
    }
}

Edit 2:

我更新了示例。现在任务是实体而不是复杂类型。

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

EF4 仅代码映射继承 的相关文章

  • EF Core Group By 翻译支持条件总和

    听说 EF Core 2 1 将支持翻译小组 我感到非常兴奋 我下载了预览版并开始测试它 但发现我在很多地方仍然没有得到翻译分组 在下面的代码片段中 对 TotalFlagCases 的查询将阻止翻译分组工作 无论如何 我可以重写这个以便我
  • 按成员序列化

    我已经实现了template
  • 在 Windows 窗体中保存带有 Alpha 通道的单色位图会保存不同(错误)的颜色

    在 C NET 2 0 Windows 窗体 Visual Studio Express 2010 中 我保存由相同颜色组成的图像 Bitmap bitmap new Bitmap width height PixelFormat Form
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • Clang 3.1 + libc++ 编译错误

    我已经构建并安装了 在前缀下 alt LLVM Clang trunk 2012 年 4 月 23 日 在 Ubuntu 12 04 上成功使用 GCC 4 6 然后使用此 Clang 构建的 libc 当我想使用它时我必须同时提供 lc
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 使用 WebClient 时出现 System.Net.WebException:无法创建 SSL/TLS 安全通道

    当我执行以下代码时 System Net ServicePointManager ServerCertificateValidationCallback sender certificate chain errors gt return t
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 显示UnityWebRequest的进度

    我正在尝试使用下载 assetbundle统一网络请求 https docs unity3d com ScriptReference Networking UnityWebRequest GetAssetBundle html并显示进度 根
  • 使用 Bearer Token 访问 IdentityServer4 上受保护的 API

    我试图寻找此问题的解决方案 但尚未找到正确的搜索文本 我的问题是 如何配置我的 IdentityServer 以便它也可以接受 授权带有 BearerTokens 的 Api 请求 我已经配置并运行了 IdentityServer4 我还在
  • 如何设计以 char* 指针作为类成员变量的类?

    首先我想介绍一下我的情况 我写了一些类 将 char 指针作为私有类成员 而且这个项目有 GUI 所以当单击按钮时 某些函数可能会执行多次 这些类是设计的单班在项目中 但是其中的某些函数可以执行多次 然后我发现我的项目存在内存泄漏 所以我想
  • SolrNet连接说明

    为什么 SolrNet 连接的容器保持静态 这是一个非常大的错误 因为当我们在应用程序中向应用程序发送异步请求时 SolrNet 会表现异常 在 SolrNet 中如何避免这个问题 class P static void M string
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何在Xamarin中删除ViewTreeObserver?

    假设我需要获取并设置视图的高度 在 Android 中 众所周知 只有在绘制视图之后才能获取视图高度 如果您使用 Java 有很多答案 最著名的方法之一如下 取自这个答案 https stackoverflow com a 24035591
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 哪种 C 数据类型可以表示 40 位二进制数?

    我需要表示一个40位的二进制数 应该使用哪种 C 数据类型来处理这个问题 如果您使用的是 C99 或 C11 兼容编译器 则使用int least64 t以获得最大的兼容性 或者 如果您想要无符号类型 uint least64 t 这些都定
  • C# - OutOfMemoryException 在 JSON 文件上保存列表

    我正在尝试保存压力图的流数据 基本上我有一个压力矩阵定义为 double pressureMatrix new double e Data GetLength 0 e Data GetLength 1 基本上 我得到了其中之一pressur
  • C++ 中类级 new 删除运算符的线程安全

    我在我的一门课程中重新实现了新 删除运算符 现在我正在使我的代码成为多线程 并想了解这些运算符是否也需要线程安全 我在某处读到 Visual Studio 中默认的 new delete 运算符是线程安全的 但这对于我的类的自定义 new

随机推荐

  • UIView框架、边界和中心

    我想知道如何以正确的方式使用这些属性 我认为 frame可以从我正在创建的视图的容器中使用 它设置相对于容器视图的视图位置 它还设置该视图的大小 Also center可以从我正在创建的视图的容器中使用 此属性更改视图相对于其容器的位置 最
  • 在 EMR 中引导期间获取“现有锁 /var/run/yum.pid:另一个副本正在作为 pid 运行...”

    我需要在我的 EMR 集群 AMI 3 1 1 中安装 python3 作为引导步骤的一部分 所以我添加了以下命令 sudo yum install y python3 但每次我都会收到以下错误 Existing lock var run
  • 有没有一种简单的方法来打开 Uri 并获取它指向的任何内容? (C#)

    我有一个Uri对象被传递给我的类的构造函数 我想打开文件Uri指向 无论是本地 网络 http 还是其他 并将内容读入字符串 有没有一种简单的方法可以做到这一点 或者我是否必须尝试解决诸如Uri IsFile弄清楚如何尝试打开它 stati
  • 如何使用 Teams Webhooks 发布多行消息?

    我有一个 webhook 设置 可以将消息发布到我们的 Teams 团队频道之一 我正在使用此处给出的团队 Webhook 示例之一 https learn microsoft com en us microsoftteams platfo
  • 推荐的 Ruby 交互式控制台 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Mailkit 或 mimekit 向多个收件人发送一封电子邮件

    请不要将其标记为重复问题 因为该解决方案适用于邮件消息 而不适用于 mailkit 我正在尝试向多个地址发送电子邮件 我尝试使用下面的代码 但我还没有尝试使用循环 var message new MimeMessage message Fr
  • 如何全局禁用 Pylint 特定错误消息?

    我使用 Sublime Text 编辑器和 Pylint 作为 Python 代码解析器 它工作正常 但是每当我定义变量时 我都会收到以下错误消息 C0103 错误 常量名称无效 I read 在这个主题中 https stackoverf
  • 在 Visual Studio 2012 中导入现有源文件

    我想将教程的源代码添加到现有项目中 并且希望将文件从下载到的桌面上的临时文件复制到项目文件夹中 在解决方案资源管理器中单击 源文件 文件夹会引导我进入 添加 gt 现有项目 菜单 然后我可以添加源文件 但是 它不会复制到项目文件夹中 而是保
  • 如何将 Vec 转换为 C 友好的 *mut T?

    我有一个 Rust 库 它返回u8通过 FFI 将数组传递给 C 调用者 该库还可以在客户端使用完数组后处理删除数组的问题 库没有状态 因此客户端需要拥有该数组 直到将其传回库进行释放 Using box from raw and boxe
  • Erlang 生成问题

    我在 erlang 中遇到了 spawn 问题 似乎进程在一段时间后就死掉了 这是简单的代码 module simple export server 1 client 1 owner 1 spawn n 2 start 1 main 1 s
  • javax.xml.bind.JAXBException:不包含 ObjectFactory.class o jaxb.in​​dex

    我有一个 Java Spring Web 应用程序 需要将其用作 SOAP 客户端 我正在使用 Maven 并且有一个包含自定义代码的主模块 WAR 和一个包含 WSDL 我有两个 WSDL 生成的类的子模块 JAR 依赖项 正如您在标题中
  • LsaOpenPolicy 在我的代码中抛出异常。为什么?

    我从新闻组帖子中得到了以下代码 奇怪的是 它在 Delphi 2010 中对我不起作用 LsaOpenPolicy 函数调用时抛出异常 function AddLogonAsAService ID pchar boolean const R
  • 是否可以将批量搜索请求发送到 Google 自定义搜索 API?

    我的应用程序超出了 Google 自定义搜索 API 的限制 在寻求优化我的搜索调用时 我想知道是否有办法批量发送到 API 的搜索请求 我有一些页面 每个用户搜索都会发出多个请求 并且希望将它们批处理为一个 API 调用 我环顾四周 但没
  • 在 React 中的按键上应用按钮“活动”样式

    我在 React Redux 中有一个鼓应用程序 它的功能齐全 但我希望能够在相应的按键按下时应用活动按钮样式 就像我物理单击按钮时一样 就目前情况而言 单击按钮会进行转换 但键入相应的键只会播放音频文件 而不会真正链接到按钮 有没有办法在
  • 如何以 RESTful 方式建模 CANCEL 操作?

    我们目前正在从我们的整体服务中争取较小的服务 我们的域与票务系统非常相似 我们决定开始域名的取消流程 我们的取消服务有一个简单的端点 Cancel 它接收票证的 ID 在内部 我们检索 id 对其执行一些与取消相关的操作 并更新存储中实体的
  • 使用 jquery 将字符串与数字分割[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有类似的字符串 1 test one 2 test two 3 test three 4 test four 5 test five
  • Xcode 中出现错误“未设置视图出口。”

    我在 Xcode 中遇到问题 每次我在模拟器中运行我的应用程序时 该应用程序都会在黑屏视图中停止 并且调试器会编写以下代码 2012 07 04 11 54 08 348 myApp 661 f803 由于以下原因终止应用程序 未捕获的异常
  • Laravel 5 - 未找到 Application::shutdown() 函数,是否有其他解决方案?

    出现致命错误 在 laravel 5 中调用未定义的方法 Illuminate Foundation Application shutdown 代码示例 App shutdown function do somthing 使用 Larave
  • 在进行 Rails asset:precompile 时如何运行一些初始化程序?

    背景 我有一个应用程序 最近更新到了 Rails 3 2 1 从 Rails 3 0 x 并重构了 JS 和 CSS 资源以利用新的资源管道 该应用程序托管在具有 Celadon Cedar 堆栈的 Heroku 上 应用程序配置 我将应用
  • EF4 仅代码映射继承

    我有以下型号 我想要ShiftRequest and MissionRequest在数据库中有一个表 public class RequestBase public int Id get set public DateTime Reques