【发布时间】:2016-09-22 05:13:15
【问题描述】:
那里有几个问题,但没有一个对我有太大帮助,所以我决定问自己。
我想先使用实体框架代码来创建一个奇怪的关系。我有三个实体(Qualification、Test 和 Procedure),它们都可以选择拥有一个或多个文档。我正在尝试将所有文档存储在一张表中。如何配置所有这些实体之间的关系。
-
Qualification有一对一可选Document -
Test有一对一可选Document -
Procedure有一对多可选Documents
Document 与 Qualification、Test 或 Procedure 之间存在必需的关系。
public class Assessment
{
public int AssessmentId { get; set; }
//Other properties in Assessment
public Document Document { get; set; }
}
public class Qualification
{
public int QualificationId{ get; set; }
//Other properties in Qualification
public Document Document { get; set; }
}
public class Procedure
{
public int ProcedureId { get; set; }
//Other properties in Procedure
public ICollection<Document> Documents { get; set; }
}
public class Document
{
public int DocumentId { get; set; }
//Other properties in Document
public Qualification Qualification { get; set; }
public Assessment Assessment { get; set; }
public Procedure Procedure { get; set; }
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// Not sure what goes here, but this was not working
modelBuilder.Entity<Document>()
.HasOptional(d => d.Qualification).WithOptionalPrincipal(q => q.Document);
modelBuilder.Entity<Document>()
.HasOptional(d => d.Asssessment).WithOptionalPrincipal(q => q.Document);
}
添加迁移时出现错误:
无法确定类型之间关联的主体端。此关联的主体端必须使用关系流式 API 或数据注释显式配置。
我不知道该怎么做。我在Assessment 和Qualification 中有一个可为空的int DocumentId,但这不起作用b/c Procedure 可以保存一个集合,所以Document 必须保存ID。 Document 是否为每个可能的父母持有一个可为空的 ID?请帮忙。
【问题讨论】:
标签: c# sql-server entity-framework