实体框架4与FluentApi问题的关系

时间:2020-04-28 15:58:44

标签: entity-framework entity-framework-6

我有一个旧版API,它在Asp.Net 4.6.1Entity 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,但据我所知我还没有)

任何人都可以在这里提出我做错了什么吗?

0 个答案:

没有答案