Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC 5-Can和x27;t在一对一关系中保存实体_C#_Asp.net Mvc_Entity Framework_Ef Fluent Api - Fatal编程技术网

C# MVC 5-Can和x27;t在一对一关系中保存实体

C# MVC 5-Can和x27;t在一对一关系中保存实体,c#,asp.net-mvc,entity-framework,ef-fluent-api,C#,Asp.net Mvc,Entity Framework,Ef Fluent Api,我试图使用EF在两个实体之间创建一对一的关系,但是,当我试图实际创建CumulativeRecord实体时,我在db.SaveChanges()上遇到此错误: 当identity_insert设置为OFF时,无法在表“CumulativeRecords”中为identity列插入显式值 我的两个模型如下: public class CumulativeRecord { [ForeignKey("ANA")] public int CumulativeRecordId { get;

我试图使用EF在两个实体之间创建一对一的关系,但是,当我试图实际创建
CumulativeRecord
实体时,我在
db.SaveChanges()
上遇到此错误:

当identity_insert设置为OFF时,无法在表“CumulativeRecords”中为identity列插入显式值

我的两个模型如下:

public class CumulativeRecord
{
    [ForeignKey("ANA")]
    public int CumulativeRecordId { get; set; }
    public virtual ANA ANA { get; set; }
}

public class ANA
{
    public int ANAId { get; set; }
    public virtual CumulativeRecord CumulativeRecord { get; set; }
}
使用Fluent API,我有:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);

    modelBuilder.Entity<ANA>()
        .HasRequired(a => a.CumulativeRecord)
        .WithRequiredPrincipal(a => a.ANA);
}

还值得注意的是,我没有使用新数据库,该数据库存在,我正在向其中添加模型和关系。

错误回答了问题。您正试图在
CumulativeRecordId
字段中插入特定值,但在数据库中,这是
CumulativeRecord
表的主键

它被设置为
IDENTIY
,这意味着它将自动递增,因此您不需要在此列中插入值

此外,由于这是一个1-1关系,因此在关系的两侧都需要外键

您的类应该如下所示

public class CumulativeRecord
{
    public int CumulativeRecordId { get; set; }

    public int AnaRecordId { get; set; }
    [ForeignKey("AnaRecordId")]
    public virtual ANA ANA { get; set; }
}

public class ANA
{
    public int ANAId { get; set; }

    public int CumulativeRecordId { get; set; }
    [ForeignKey("CumulativeRecordId")]
    public virtual CumulativeRecord CumulativeRecord { get; set; }
}

这个错误回答了这个问题。您正试图在
CumulativeRecordId
字段中插入特定值,但在数据库中,这是
CumulativeRecord
表的主键

它被设置为
IDENTIY
,这意味着它将自动递增,因此您不需要在此列中插入值

此外,由于这是一个1-1关系,因此在关系的两侧都需要外键

您的类应该如下所示

public class CumulativeRecord
{
    public int CumulativeRecordId { get; set; }

    public int AnaRecordId { get; set; }
    [ForeignKey("AnaRecordId")]
    public virtual ANA ANA { get; set; }
}

public class ANA
{
    public int ANAId { get; set; }

    public int CumulativeRecordId { get; set; }
    [ForeignKey("CumulativeRecordId")]
    public virtual CumulativeRecord CumulativeRecord { get; set; }
}

您是否尝试过将
CumulativeRecord
设置为表
CumulativeRecord
的主键?EF无法在没有主键的表上进行更新。如果遵循约定,默认情况下,CumulativeRecordId是主键。但是,我将尝试添加一个
[Key]
无论如何,您是否尝试将
CumulativeRecordId
设置为表的主键
CumulativeRecord
?EF无法在没有主键的表上进行更新。如果遵循约定,默认情况下,CumulativeRecordId是主键。不过,我会尝试添加一个
[Key]
不管怎样查看我保存对象的更新尝试,我不会尝试手动插入密钥,至少我认为不会。稍微修改了我的答案。您是否已按上述方式定义外键?通过这种方式获取新错误,
ANA_CumulativeRecord_Target::在关系“ANA_CumulativeRecord”中的角色“ANA_CumulativeRecord_Target”中多重性无效。因为依赖角色属性不是关键属性,所以依赖角色的多重性上限必须是“*”
@barnacle.m现在看看我的更改。如果显然是1-1,那么关系的两边都需要外键。看这里。我在本地工作。谢谢,我应该在我的上下文类中使用Fluent修改什么吗?请参阅我保存对象的更新尝试,我没有尝试手动插入密钥,至少我不认为我是。稍微修改了我的答案。您是否已按上述方式定义外键?通过这种方式获取新错误,
ANA_CumulativeRecord_Target::在关系“ANA_CumulativeRecord”中的角色“ANA_CumulativeRecord_Target”中多重性无效。因为依赖角色属性不是关键属性,所以依赖角色的多重性上限必须是“*”
@barnacle.m现在看看我的更改。如果显然是1-1,那么关系的两边都需要外键。看这里。我在本地工作。谢谢,在我的上下文类中有什么我应该用Fluent修改的吗?