我有两张桌子:
- 文档(Id、DocumentTypeId、标题、详细信息)
- 文档类型(ID、名称、描述)。
DocumentTypeId 是引用 DocumentTypes 表的外键。 IE。所有文件都可以应该
有一个分配给它们的类型。
我有两节课:
public class Document
{
public string Id { get; set; }
public string Title { get; set; }
public DocumentType DocumentType { get; set; }
}
and
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'
我的问题是如何设置这种一对多关系? IE。我想要许多具有不同文档类型的文档。
首先进行此更改。导航属性必须是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");
}
}
你不需要HasKey
or Property
呼吁Id
领域,因为它们已经被约定俗成。您的表格必须有一列DocumentId
在此配置中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)