代码优先抑制外键生成

本文关键字:代码 | 更新日期: 2023-09-27 17:53:08

我们有一个具有许多实体的DB,我以三个实体Case, Task和Note为例。任何实体都可以拥有Note,我们决定采用以下DB设计。

Case:
  - CaseId
  - Title
Task:
  - TaskId
  - Title
Note:
  - NoteId
  - Desc
  - ParentId (will contain the PK of Case/Task etc but without FK constraint)

poco将如下所示:

Case
{
  CaseId
  Title
  Notes
}
Task
{
  TaskId
  Title
  Notes
}

我们不希望有引用约束等,因为这些注释不会被删除。我们可以使用EDMX对其进行建模,并希望使用代码优先方法。我们已经搜索了SO,并研究了多态关联等的建议。如果给出这种设计,首先使用代码建模的最佳方法是什么?

代码优先抑制外键生成

我建议您使用继承-它遵循您的描述:

public class EntityWithNotes
{
  public int Id { get; set; }
  public string Title { get; set; }
  public Collection<Note> { get; set; }
}
public class Note
{
  public int Id { get; set; }
  public string Description { get; set; }
  public int ParentId { get; set; }
}
public class Case : EntityWithNotes { /* ...*/ }
public class Task : EntityWithNotes { /* ...*/ }

…并使用外键关联。参考约束不只是关于删除。