entity-framework - ReferentialConstraint 中的依赖属性映射到存储生成的列。列:'DocumentId'
问题描述
我一直在寻找类似的问题和答案,但我想我无法将修复应用于我自己的情况。
我有两个模型之间的一对一关系(或者更确切地说:我正在尝试拥有它)。
我想要完成的是:
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 中的依赖属性映射到存储生成的列。列:'DocumentId'。]
楷模
档案文件.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; }
}
文档.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);
}
}
文档配置.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();
解决方案
推荐阅读
- c# - 从 C# 运行 tabcmd 命令时 Process.Start() 未完成
- objective-c - 如何从代码在 SceneKit 中设置基于物理的渲染?
- jquery - 无法使用 jQuery.toggle() 以编程方式切换(仅关闭)Highchart 的默认上下文菜单
- go - 如何在 Go 中自动生成 Avro 模式?
- java - 提取 .jar 时如何播放音频文件?
- c# - 在 ASP.NET 中使用 MySqlCommand 的 MySQL 语法错误
- r - 在 r 中使用 as.numeric() 时值会发生变化
- c# - 从 C# 中的 SQL Server 参数获取字节数组
- unit-testing - Karma Jasmine:相同的函数名称,两个不同的源文件
- api - HomeBridge eWeLink WebSocketClient:错误'0'(错误:意外的服务器响应(200))