[英]Entity Framework Fluent API to map simple one-to-many relation
我有兩個桌子:
DocumentTypeId是引用DocumentTypes表的外鍵。 也就是說,所有文件都可以分配一個類型。
我有兩節課:
public class Document
{
public string Id { get; set; }
public string Title { get; set; }
public DocumentType DocumentType { get; set; }
}
和
public class DocumentType
{
public string Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
我有一個配置
internal class DocumentsConfiguration : EntityTypeConfiguration<Document>
{
public DocumentsConfiguration()
{
ToTable("Documents");
HasKey(document => document.Id);
Property(document => document.Id).HasColumnName("Id");
HasRequired(document => document.DocumentType);//????????
Property(document => document.Title).HasColumnName("Title").IsRequired();
}
}
這是行不通的。 我收到此錯誤消息:
Invalid column name 'DocumentType_Id'
如果我將fk列重命名為DocumentType_Id,則會收到以下錯誤消息:
Invalid column name 'DocumentTypeId'
我的問題是如何設置這樣的一對多關系? 即我想擁有許多具有不同文檔類型的文檔。
首先進行更改。 導航屬性必須是virtual
:
public class Document
{
public string Id { get; set; }
public string Title { get; set; }
public virtual DocumentType DocumentType { get; set; }
}
然后將配置更改為此:
internal class DocumentsConfiguration : EntityTypeConfiguration<Document>
{
public DocumentsConfiguration()
{
HasRequired(document => document.DocumentType)
.WithMany()
.Map(e => e.MapKey("DocumentTypeId"));
Property(document => document.Title).HasColumnName("Title").IsRequired();
ToTable("Documents");
}
}
您不需要Id
字段的HasKey
或Property
調用,因為約定已經假定它們。 您的表在此配置中必須具有一列DocumentId
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.