我有简单的一对多关系.
public partial class LinkedDocument
{
public Guid Id { get; set; }
public Guid DocumentId { get; set; }
public virtual TblDocumentData Document { get; set; }
}
public partial class TblDocumentData : IEntity<Guid>
{
public Guid Id { get; set; }
// other props
public virtual ICollection<LinkedDocument> LinkedDocuments { get; set; } = new HashSet<LinkedDocument>();
}
modelBuilder.Entity<LinkedDocument>(
entity =>
{
entity.ToTable("LinkedDocument");
entity.HasKey(e => new {e.Id, e.DocumentId})
.HasName("PK_LinkedDocument")
.IsClustered(false);
entity.Property(e => e.Id).ValueGeneratedNever();
entity.HasOne(d => d.Document)
.WithMany()
.HasForeignKey(d => d.DocumentId)
.HasConstraintName("FK_LinkedDocument_TBL_DocumentData_DocumentId")
.IsRequired()
.OnDelete(DeleteBehavior.Cascade);
});
和Tbl_DocumentData Fluent API(仅部分)
entity.HasMany(d => d.LinkedDocuments)
.WithOne(d => d.Document)
.HasForeignKey(d => d.DocumentId)
.IsRequired();
在保存时,我有如下代码:
this._ctx.Set<TblDocumentData>().Add(documentData);
this._ctx.Set<LinkedDocument>().Add(new LinkedDocument {Id = attachmentModel.EntityId, DocumentId = documentData.Id});
await this._ctx.SaveAsync(cancellationToken);
但在保存时,我看到错误:列名‘TblDocumentDataId’无效. 在调试控制台中,我可以看到SQL脚本是这样生成的:
INSERT INTO [LinkedDocument] ([DocumentId], [Id], [TblDocumentDataId])
VALUES (@p22, @p23, @p24);
按解决方案搜索-找不到第TblDocumentDataId
列-因此这是EF添加的内容.
我在一对多关系的配置中遗漏了什么?