如何解决ReferentialConstraint 中的依赖属性映射到存储生成的列列:'DocumentId'
我一直在寻找类似的问题和答案,但我想我无法将修复程序应用于我自己的情况。
我有 2 个模型之间的一对一关系(或者更确切地说:我正在尝试拥有它)。
我想要完成的是:
var dossierDocument = new DossierDocument
{
DossierId = dossierId,CreatedAt = DateTime.UtcNow,Document = new Document
{
Content = content,Filename = $"{template.ToFriendlyName()}.docx",MimeType = template.MimeType
},};
this.Context.DossierDocuments.Add(dossierDocument);
await this.Context.SaveChangesAsync();
但这给了我错误:
[InvalidOperationException: 一个依赖属性 referentialConstraint 映射到存储生成的列。柱子: '文档 ID'。]
模型
DossierDocument.cs
public class DossierDocument
{
public virtual int DossierDocumentId { get; set; }
public virtual int DossierId { get; set; }
public virtual DateTime CreatedAt { get; set; }
public virtual int DocumentId { get; set; }
[ForeignKey("DocumentId")]
public virtual Document Document { get; set; }
}
Document.cs
public class Document
{
public virtual int DocumentId { get; set; }
public virtual byte[] Content { get; set; }
public virtual string MimeType { get; set; }
public virtual string Filename { get; set; }
public virtual DossierDocument DossierDocument { get; set; }
}
DossierDocumentConfiguration.cs
public class DossierDocumentConfiguration : EntityTypeConfiguration<DossierDocument>
{
public DossierDocumentConfiguration()
{
this.ToTable("DossierDocuments").HasKey(t => t.DossierDocumentId);
this.Property(e => e.DossierDocumentId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Hasrequired(e => e.Document).WithrequiredPrincipal(e => e.DossierDocument);
}
}
DocumentConfiguration.cs
public class DocumentConfiguration : EntityTypeConfiguration<Document>
{
public DocumentConfiguration()
{
this.ToTable("Documents").HasKey(t => t.DocumentId);
this.Property(e => e.DocumentId).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
this.Property(e => e.MimeType).HasMaxLength(150);
this.Property(e => e.Filename).HasMaxLength(150);
}
}
所以我想知道我做错了什么?
我的目标是查询 DossierDocuments
,因此我希望 DossierDocument
具有指向 Document
的导航属性。我不认为拥有指向 DossierDocument
的导航属性的意义,所以我宁愿没有,但无论我尝试什么都会失败。
更新 1:
我觉得我很幸运,因为在我进行更改后它似乎可以工作,但我仍然想知道我是否正确修复了它。
在 DossierDocumentConfiguration.cs 中我更改了:
this.Hasrequired(e => e.Document).WithrequiredPrincipal(e => e.DossierDocument);
为此:
this.HasKey(e => e.DocumentId).Hasrequired(e => e.Document).WithOptional();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。