C# 代码优先Suppress外键生成
我们有一个包含许多实体的DB,我举了一个三个实体的例子—案例、任务和注释。任何实体都可以有注释,我们决定采用以下DB设计C# 代码优先Suppress外键生成,c#,ef-code-first,entity-framework-5,C#,Ef Code First,Entity Framework 5,我们有一个包含许多实体的DB,我举了一个三个实体的例子—案例、任务和注释。任何实体都可以有注释,我们决定采用以下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
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
对此进行建模,并希望使用代码优先的方法。我们已经搜索过了,并查看了多态关联的建议等。如果给出这种设计,那么首先使用代码建模的最佳方法是什么?提前感谢。我建议您使用继承-根据您的描述如下:
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 { /* ...*/ }
public class EntityWithNotes
{
公共int Id{get;set;}
公共字符串标题{get;set;}
公共集合{get;set;}
}
公开课堂讲稿
{
公共int Id{get;set;}
公共字符串说明{get;set;}
public int ParentId{get;set;}
}
公共类大小写:EntityWithNotes{/*…*/}
公共类任务:EntityWithNotes{/*…*/}
…并使用外键关联。引用约束不仅仅是关于删除。谢谢您的回复,丹尼斯。如果您或其他人能为我们指出一种解决原始问题的方法,即不使用/让ef生成FKs,我将不胜感激。是否希望先使用代码生成/迁移数据库?是,我们希望根据问题生成DB。您不能对EF在创建数据库时不会尝试转换为FK约束的关联进行建模。您必须手动加入注释,例如在存储库中。