![](/img/trans.png)
[英]Entity Framework Core: multiple relationships to one table of base type
[英]Entity Framework table with multiple optional one to one relationships
有几个问题,但没有一个对我有太大帮助,所以我决定问自己的问题。
我想先使用实体框架代码来创建一个奇怪的关系。 我有三个实体( 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? 请帮忙。
在您的映射中,您将Document
设置为主体,但实际上它是从属的。 因此,您应该将映射更改为:
modelBuilder.Entity<Document>()
.HasRequired(d => d.Qualification)
.WithOptionalDependent(q => q.Document);
modelBuilder.Entity<Document>()
.HasRequired(d => d.Asssessment)
.WithOptionalDependent(q => q.Document);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.