0

我有一Candidate堂课。当有人删除 aCandidate时,我希望DeletedCandidate从中派生Candidate的 a 存储在单独的表中。

我如何在 EF 中对此进行建模,代码优先?我认为我最好的选择是 TBC,但是当我在 Context 中使用以下内容时,System.Data.MappingException会抛出 a。

modelBuilder.Entity<DeletedCandidate>().Map(d => {
                d.ToTable("DeletedCandidate");
                d.MapInheritedProperties();

            });
4

1 回答 1

1

我不会将继承用于类似归档的任务。在您的主流应用程序代码中,您将始终必须区分 Candidates 和 DeletedCandidates。使用 EF,您必须始终通过OfType<Candidate>.

我会为 DeletedCandidates 创建一个单独的类(和表)。因此,您总是可以在需要时找到它们,但它们永远不会在您的其余代码中受到伤害。一个缺点可能是您必须始终保持两者的属性(和列)同步。这可以通过让两个类实现一个公共接口来缓解(您可以通过代码优先轻松地做到这一点)。

如果您需要保留与 DeletedCandidates 的外键关系,那就另当别论了。在这种情况下,我认为您能做的最好的事情就是使用已删除的标志(但您需要过滤才能获得活跃的候选人)。

只是一个建议:D。

于 2012-06-26T08:32:55.457 回答