【问题标题】:Linq-to-Sql Base Class Discriminator Value BUGLinq-to-Sql 基类判别器值BUG
【发布时间】:2011-11-24 21:01:08
【问题描述】:

在 Linq-to-Sql 设计器中,当我没有为抽象基类定义“基类鉴别器值”时,我得到“以 'X' 为根的继承层次结构没有定义默认值。”运行时错误,但如果我这样做,我会得到“抽象类'类名'不应该被分配一个继承鉴别键。”错误。它有什么问题?

编辑:

我自己找到了原因和解决方案。请不要回答我的问题。

即使您知道您的数据库中没有与任何定义的继承代码不匹配的行,无论如何您必须为 Linq-to-Sql 设置“继承默认值”属性。但是您不能将抽象基类用作“继承默认值”。因此,您必须创建什么都不做的虚拟非抽象类(在构造函数中抛出异常等)并将其用作“继承默认值”。将“基类鉴别器值”留空。

【问题讨论】:

  • 为什么不添加您的编辑作为您问题的答案以供将来参考?
  • @Denis,将您问题的 edit 部分发布为新答案,然后接受它。

标签: linq-to-sql


【解决方案1】:

我通过将默认鉴别器设置为 0、使基本查找类成为常规类并将默认类设置为查找表来完成我的工作。这不需要使用鉴别器。出于支持的原因,我更喜欢这种方法。从现在起 2 年后,有人可能会去删除虚拟记录(有意或无意),然后永远找出原因。它只是让它更简单,但你确实会对架构产生影响。但是,对于所有 ORM,您总是必须做出这样的决定。

我知道你不想要答案,但我这样做是为了如果有人用谷歌搜索,他们也知道替代解决方案。这使他们能够做出明智的决定。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多