我可以在实体框架中混合使用每个层次的表和每种类型的表吗?

假设我有两个表格:Message和SuperMessage

和3个实体:消息(基础(非抽象)),Comment(继承自Message)和SuperMessage(继承自Message)

消息具有不可空的MessageType字段,用作鉴别器。

  • MessageType = 1表示它是一个消息
  • MessageType = 2意味着它是一个评论
  • MessageType = 3 AND并加入到超级消息意味着它是一个超级消息
  • 问题是,我无法在SuperMessage的映射细节部分的MessageType上指定条件,因为它无法看到MessageType字段,我不能忽略它。

    我怎样才能使这些工作与海誓山盟一起工作?

    更新构建错误:

    错误3014:映射片段中的问题:表SuperMessage(ID)到表Message(MessageId):'的外键'外键约束'FK_SuperMessage_inherits_Message'未在模型中强制执行。 需要创建关联或继承关系来强制执行此约束。


    我重现了这一点,并得到了与你一样的错误。 据我所知,似乎将这两种类型的继承组合在一个基表中是不可能的。 我很想被证明是错误的。 ;-)


    你有没有尝试添加一个中间抽象实体类型,即:

    abstract     MessageBase      --> Message table
    non-abstract Message          --> Message table when MessageType == 1
    non-abstract Comment          --> Message table when MessageType == 2
    abstract     SuperMessageBase --> Message table when MessageType == 3
    non-abstract SuperMessage     --> SuperMessage table
    

    另外检查一下我解决的类似情况:EF:当TPH表中的抽象基数和一些具体类型以及其他类型都有自己的表时,我可以混合使用TPH和TPT吗?

    链接地址: http://www.djcxy.com/p/49745.html

    上一篇: Can I mix Table per Hierarchy and Table per Type in Entity Framework?

    下一篇: Eclipse: How to clone git over ssh with keyfile?