我有一个旧版API,它在Asp.Net 4.6.1
和Entity Framework 6
上运行。
我有以下pocos(出于宽容而减少);
public class JobStatusHistory
{
/*..*/
[ForeignKey("JobStatusHistorySignature")]
public int? JobStatusHistorySignatureId { get; set; }
public JobStatusHistorySignature JobStatusHistorySignature { get; set; }
}
和
public class JobStatusHistorySignature : Entity
{
/**...*/
[ForeignKey("JobStatusHistory")]
public int JobStatusHistoryId { get; set; }
public virtual JobStatusHistory JobStatusHistory { get; set; }
}
如果我尝试像这样运行迁移,我会得到
多重性在角色中无效
错误。
然后我使用流利的api设置关系,如下所示;
public JobStatusHistoryConfiguration(string schema = "dbo")
{
ToTable(schema + ".JobStatusHistories");
HasKey(x => x.Id);
HasOptional(x => x.JobStatusHistorySignature).WithRequired(x => x.JobStatusHistory);
}
和
public JobStatusHistorySignatureConfiguration(string schema = "dbo")
{
ToTable(schema + ".JobStatusHistorySignatures");
HasKey(x => x.Id);
HasRequired(x => x.JobStatusHistory).WithOptional(x => x.JobStatusHistorySignature);
}
这允许迁移运行。但是,当我尝试将新实体插入JobStatusHistorySignature
表中时,如下所示;
var jobStatusHistorySignature = new JobStatusHistorySignature
{
JobStatusHistoryId = jobStatusHistory.Id,
};
我收到以下错误;
当IDENTITY_INSERT设置为OFF时,无法在表'JobStatusHistorySignatures'中为标识列插入显式值。
(这建议我需要生成“身份”列ID,但据我所知我还没有)
任何人都可以在这里提出我做错了什么吗?