EF4.1 使用按层次结构表继承创建数据库时出现异常

2023-12-19

我创建了一个非常简单的项目来演示每个层次结构表的继承。在我尝试生成数据库的单元测试中,根据配置,我收到了许多错误之一:

没有Required() method

Map<InActiveUser>(x => x.Requires("IsActive").HasValue(false));
Map<ActiveUser>(x => x.Requires("IsActive").HasValue(true));

提供:

System.Data.DataException : An exception occurred while initializing the database. See the InnerException for details.
  ----> System.Data.EntityCommandCompilationException : An error occurred while preparing the command definition. See the inner exception for details.
  ----> System.Data.MappingException : 
(6,10) : error 3032: Problem in mapping fragments starting at line 6:Condition member 'User.IsActive' with a condition other than 'IsNull=False' is mapped. Either remove the condition on User.IsActive or remove it from the mapping.

Required() method:

Map<InActiveUser>(x => x.Requires("IsActive").HasValue(false).IsRequired());

Map<ActiveUser>(x => x.Requires("IsActive").HasValue(true).IsRequired());

提供:

System.Data.DataException : An exception occurred while initializing the database. See the InnerException for details.
  ----> System.Data.EntityCommandCompilationException : An error occurred while preparing the command definition. See the inner exception for details.
  ----> System.Data.MappingException : 
(6,10) : error 3023: Problem in mapping fragments starting at lines 6, 13, 19:Column User.IsActive has no default value and is not nullable. A column value is required to store entity data.

据我了解,我们不应该在基本类型上定义鉴别器列/属性,但无论哪种方式,定义或不定义列似乎都没有区别:

  public class User
  {
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual int Id { get; set; }

    [Required]
    public virtual string Username { get; set; }

    [Required]
    [DefaultValue(true)]
    public bool IsActive { get; set; } //have tried without this property
  }

  public class InActiveUser : User
  {
    public virtual DateTime DeActivatedDate { get; set; }
  }

  public class ActiveUser : User
  {
  }

您无法将鉴别器映射为实体中的属性。鉴别器定义实体的类型。原因很明显 - 判别器定义了实例化类型。如果您能够在运行时更改鉴别器值,会发生什么情况? .NET 应如何更改实例化对象的类型?

将实体定义为:

public class User
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public virtual int Id { get; set; }

    [Required]
    public virtual string Username { get; set; }
}

public class InActiveUser : User
{
    public virtual DateTime DeActivatedDate { get; set; }
}

public class ActiveUser : User
{ }

这应该有效:

modelBuilder.Entity<User>()
            .Map<InActiveUser>(x => x.Requires("IsActive").HasValue(false))
            .Map<ActiveUser>(x => x.Requires("IsActive").HasValue(true));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EF4.1 使用按层次结构表继承创建数据库时出现异常 的相关文章

  • IEnumerable.GetEnumerator() 和 IEnumerable.GetEnumerator()

    在 net框架中 有一个通用的IEnumerable
  • 理解@property装饰器和继承[重复]

    这个问题在这里已经有答案了 这里是 Python 3 以防万一它很重要 我试图正确理解如何实现继承 property使用 我已经搜索了 StackOverflow 并阅读了大约 20 个类似的问题 但无济于事 因为他们试图解决的问题略有不同
  • 如何在 Javascript 中将字符串数组转换为特定的树结构

    我从后端获取文件路径列表 它代表文件夹结构 如下所示 paths path to file1 doc path to file2 doc foo bar doc 路径的长度是任意的 为了使用文件树组件 角度2树组件 https github
  • R中的等值线绘图问题

    编辑 我已经意识到问题的根源 我只有我有数据的县的计数信息 该信息少于我正在绘制的区域中的县数量 按理说 问题代码行在这里 mapnames lt map county plot FALSE 4 names colorsmatched lt
  • C++中的虚继承是什么

    假设我有这样的代码 class A class B virtual public A class C virtual public A class D public B public C virtual public A If D继承B a
  • 非虚实例方法继承是如何解决的?

    通过 C 从 CLR 引用 它读起来就像call将在运行时通过 CLR 搜索由基类型定义的方法 Then callIL指令用于调用实例或虚拟 方法中 您必须指定一个引用对象的变量 方式 变量本身的类型指示定义该方法的类型 CLR 应该调用
  • 使用 AutoMapper 展开 DTO

    我一直在尝试使用 AutoMapper 来节省从 DTO 到域对象的时间 但是我在配置地图以使其正常工作时遇到了麻烦 并且我开始怀疑 AutoMapper 是否可能是错误的工具工作 考虑这个域对象的示例 一个实体和一个值 public cl
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • Java - java.lang.NoSuchMethodException

    我尝试使用这段代码 Updatem set 在 for 循环内部使用 它会执行几种使用不同类型参数的方法 如果我添加例如 int classgetMethod 在一次迭代后我会得到错误 因为下一个方法需要 String class 是否可以
  • C# - 继承WPF布局 - Window from Window

    我的 Window 继承有问题 我不明白问题是什么 我认为 我的布局 MediaLibrary xaml 必须继承 MainWindow 但我不知道该怎么做 有2类 主窗口 xaml
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • 为什么我的 NHibernate 包集合没有动态设置子项的“父 ID”?

    我有一个新对象 其中包含一些作为 IList 属性的新对象的集合 我通过sql探查器看到正在执行两个插入查询 一个用于父级 它具有新的guid id 另一个用于子级 但是 引用父级的子级上的外键是一个空guid 这是我在父级上的映射
  • 类方法作为构造函数和继承

    问题很简单 如果一个班B继承一个类A并想要重写用作构造函数的 类方法 我猜你称其为 工厂方法 问题是B classmethod会想要重复使用A classmethod 但随后它必须创建类 A 的实例 同时它对类 A 进行子类化 因为作为类方
  • 使用 protobuf-net 序列化继承的类

    我在使用 protobuf net 序列化派生类时遇到问题 我不知道是因为不支持 还是我做错了什么 我有一个通用基类 我可以直接序列化 然后我对其进行专门化 但我无法序列化这个基类 以下是两个类的代码和使用示例 难道我做错了什么 Edit
  • 虚拟继承如何解决“钻石”(多重继承)的歧义?

    class A public void eat cout lt lt A class B virtual public A public void eat cout lt lt B class C virtual public A publ
  • 从架构上来说,我应该如何用更易于管理的内容替换非常大的 switch 语句?

    EDIT 1 忘记添加嵌套属性曲线球 UPDATE 我选择了 mtazva 的答案 因为这是我的具体案例的首选解决方案 回想起来 我用一个非常具体的例子提出了一个一般性问题 我相信这最终让每个人 或者也许只是我 对问题到底是什么感到困惑 我
  • Django 模型继承、重写字段

    我正在阅读 Python Web Development with Django 一书 我在书中找到了这个例子 class Book models Model title models CharField max length 100 ge
  • LINQ to Entities 是否支持“where”子句谓词中的 IEquatable?

    我有一个名为 EntityBase 的简单基本实体类型 它实现 IEquatable 我在 LINQ to Entities 之外使用了此代码 使用EF http en wikipedia org wiki ADO NET Entity F
  • 如何使用 Objective-C 协议

    我需要将 Picker 选择的值继承到其他地方 我正在尝试下面的代码 但空值即将到来 请检查我哪里出错了 我必须继承在中传递的字符串值PickerView 请检查代码 选取器1 h import
  • Solidity:父合约可以看到子合约的数据更新吗?

    我过早地实现了以太坊游戏 我将我的代码分为两个合同 将 游戏 功能与管理员调用的功能分开 Admin sol 继承自 Game sol 如下所示 Admin 中创建了一个 struct 对象 但 Game 看不到它 Getter 函数不返回

随机推荐

  • 如何在(简单)有向图中强制形成直边?

    我有以下简单的有向图 digraph clientproxyserver Client gt Proxy label Request from Client Proxy gt Server label Forwarded Request S
  • 悬停时切换 CSS 颜色

    我正在尝试向这样的类添加突出显示颜色 common box hover function common box addClass hover me 这可行 但为什么不行 common box hover function common bo
  • 管道在kedro中找不到节点

    我正在关注管道教程 https kedro readthedocs io en latest 03 tutorial 04 create pipelines html 创建所有需要的文件 启动 kedrokedro run node pre
  • 捕获并打印完整的 Python 异常回溯,无需停止/退出程序

    我想捕获并记录异常而不退出 例如 try do stuff except Exception as err print Exception err I want to print the entire traceback here not
  • 生成一定范围内的“n”个唯一随机数[重复]

    这个问题在这里已经有答案了 我知道如何在 Python 中生成一定范围内的随机数 random randint numLow numHigh 我知道我可以将其放入循环中以生成 n 个数字 for x in range 0 n listOfN
  • Python-删除uuencoding行

    我正在处理许多文本文件 其中 其中一些 包含 uuencoding 可以是 jpg 或 pdf 或 zip of xlsx 等 我不关心嵌入的 UUencoded 数据 所以我只想丢弃这些段落并保留其余文本 我正在努力思考如何想出一种只跳过
  • 在 pandas 中,如何查询列表?

    假设我有一个将列表作为其值的 DataFrame df pd DataFrame languages en fr author Dickens Charles Austen Jane 我可以轻松查询它的字符串 df df author Di
  • 如何在 Meteor 的服务器端调试并记录自己的代码?

    没关系 这不起作用的原因 我忘记了meteor reset so debugger没有机会停下来 呃 更多信息 我正在使用Mason Chang对相关问题的回答中的方法 而不是kill s USR1 proc id 我可以看到脚本 但无法在
  • 响应式高度/宽度视频标题

    我正在为一个网站制作一个响应式 html5 视频标题 我希望它能够垂直和水平响应 仅使用 CSS 来实现响应能力 http jsfiddle net b9cpmuy9是我用于响应宽度的 借用了这里另一篇文章的视频 width 100 hei
  • C++ 视图类型:按常量传递还是按值传递?

    最近在代码审查讨论中出现了这个问题 但没有得出令人满意的结论 所讨论的类型类似于 C string view TS 它们是围绕指针和长度的简单非拥有包装器 并用一些自定义函数装饰 include
  • Spring引导测试“没有可用的合格bean类型”

    我是 Spring boot 的新手 但这是我现在面临的问题 Application java public class Application public static void main String args SpringAppli
  • 我的编译器在做什么? (优化memcpy)

    我正在 VC 2010 中使用以下设置编译一些代码 O2 Ob2 Oi Ot 但是 我在理解生成的程序集的某些部分时遇到了一些困难 我在代码中添加了一些问题作为注释 另外 现代 cpu 上通常建议的预取距离是多少 我可以在我自己的 cpu
  • pandas concat 中的级别选项

    df1 DataFrame np arange 6 reshape 3 2 index a b c columns one two df2 DataFrame 5 np arange 4 reshape 2 2 index a c colu
  • 如何使用 jQuery 创建多个 HTML 元素?

    我想做的是使用 jQuery 创建一个表分页器控件 它包含大量链接和跨度 我已经设法通过简单的字符串连接来做到这一点 但我不敢相信 jQuery 不能让这变得更优雅 我不能在这里使用 jTemplates 因为该生成具有相当多的程序逻辑 问
  • 如何将 Npp8u * 转换为 CUdeviceptr

    我是cuda驱动程序Api接口的新手 但我认为CUdeviceptr看起来像一个句柄参数 所以我对CUdeviceptr和npp8u 之间的转换感到困惑 Npp8u src unsigned char temp temp src CUdev
  • 如何获取括号内的括号

    我试图将括号保留在由括号包围的字符串内 有问题的字符串是 test blue hmmm derp 所需的数组输出是 test and blue hmmm derp 当前输出为 blue hmm and derp 我当前的代码是this ht
  • jquery 基于单选按钮启用/禁用文本框

    在我的页面 jsp 中 我有一个单选按钮组和一个文本框 最初被禁用 每当用户单击单选按钮时 应启用文本框 当用户单击其他单选按钮时 文本框应再次被禁用 我可以使用下面的代码启用最初禁用的复选框 DevGroup OTHER click fu
  • 如何在现有项目上使用 Backpack for Laravel?

    我正在用 Laravel 构建一个小应用程序 我刚刚发现 Backpack 看起来非常漂亮 我下载了它 我有许可证 但我真的不知道如何将它与我现有的文件一起使用 到目前为止有 3 个控制器 3 个模型和一些刀片文件 也许答案就在文档中的某个
  • 如何实时检测对象并自动跟踪它,而不是用户必须在要跟踪的对象周围绘制边界框?

    我有以下代码 用户可以按p要暂停视频 请在要跟踪的对象周围绘制一个边界框 然后按 Enter 回车 以跟踪视频源中的该对象 import cv2 import sys major ver minor ver subminor ver cv2
  • EF4.1 使用按层次结构表继承创建数据库时出现异常

    我创建了一个非常简单的项目来演示每个层次结构表的继承 在我尝试生成数据库的单元测试中 根据配置 我收到了许多错误之一 没有Required method Map