使用共享列名称对每个层次结构的第一个表进行编码错误

本文关键字:第一个 错误 编码 层次结构 共享 | 更新日期: 2023-09-27 18:36:28

我有 3 个从抽象类继承的类,所有这些类都由数据库中使用每个层次结构的表方法表示。

有一个名为 'foo' 的属性,它由两个具体类共享,但不由第三个类共享,因此它不包含在抽象类中。

代码优先迁移尝试为共享的"foo"属性创建两列,称它们为"foo"和"foo1",即使它们在各自的类中都命名为"foo"。我编辑了迁移以删除"foo1",以便在数据库中仅创建一个名为"foo"的列。

我可以毫无问题地创建包含"foo"属性的类的实例。但是,当我尝试将它们保存并保存到数据库时,我收到一条错误消息,说"列名 foo1 无效",即使我的项目中任何地方都没有提到"foo1"。这就像实体框架仍然坚持执行迁移最初具有的任何逻辑,即使我在运行迁移和创建表之前更改了它。

所以我的问题是,如何在具体类中仅由一列表示其父类不共享的具体类中的两个相同列?

使用共享列名称对每个层次结构的第一个表进行编码错误

这是通过在 POCO 中使用列注释来解决

[Column("foo")]
public string foo { get; set; }
相关文章: