微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ReferentialConstraint 中的依赖属性映射到存储生成的列列:'DocumentId'

如何解决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 举报,一经查实,本站将立刻删除。