如何在 EDMX 设计中将一张桌子制作成多个班级

问题描述 投票:0回答:1

这是我的主课

public partial class MainAcc
    {
        public int Id { get; set; }
        public string Type1 { get; set; }
        public string Type2 { get; set; }
        public string Type3 { get; set; }
    }

在 EDMX 设计中,我创建了新的实体基类型 MainAcc,我删除了一些我想在 EDMX 设计中移动的列,所以在我保存后它变成了这样

public partial class MainAcc
    {
        public int Id { get; set; }
        public string Type1 { get; set; }
    }

public partial class ChildAcc : MainAcc
    {
        public string Type2 { get; set; }
        public string Type3 { get; set; }
    }

在设计我的 ChildAcc 实体时使用 MainAcc 的表映射。毕竟我得到了这样的错误:

错误 3032:从第 2877、2907 行开始的映射片段出现问题:EntityTypes MyModel.MainAcc、MyModel.ChildAcc 被映射到表 MainAcc 中的相同行。映射条件可以用来区分这些类型映射到的行。

文本编辑器中的错误在 MainAcc 中。

c# asp.net-mvc entity-framework asp.net-core
1个回答
1
投票

看起来你不能这样做。我认为这应该是两个不同的表,但它们可以通过一些外键关联起来。

我尝试了

Database First
Model First
,我最终添加的脚本显示这将是两个相互关联的不同表。

也许您希望拥有一对一或一对多关系,但这不会发生在单个表中。如果您采用

Database First
方式,更改模型可能会导致与当前上下文不一致。如果采用
Model First
方式,建立模型关系后会自动生成两张表

我也尝试过使用分表的方式进行表映射,但是依赖实体类型有一些限制,派生类型不能映射到同一张表。

有用的链接:

高级表映射

模型第一

在 EF 6 中配置一对多关系

© www.soinside.com 2019 - 2024. All rights reserved.