带有标识列的EF Code First Parent-Child插入(HELP)

时间:2013-01-02 10:35:29

标签: asp.net-mvc entity-framework parent-child code-first identity-insert

对我来说很奇怪。 我有两个实体。 SalesStatus(父母)和Sale(儿童)。

public class SalesStatus
{
    [Key]
    public int SalesStatusID { get; set; } /* this is identity column*/

    public string Status { get; set; }

    public virtual List<Sale> Sales { get; set; }
}

public class Sale
{
    [Key]
    public int SalesID { get; set; } /* this is identity column*/

    //etc
}




SalesContext db = new SalesContext();

var ss = new SalesStatus
{
    Status = "INQ",

        Sales = new List<Sale>()
};

ss.Sales.Add(sale);
db.SalesStatus.Add(ss);
db.Entry(ss).State = EntityState.Added;
db.SaveChanges();

我有一个错误。 实体框架尝试插入具有PK值的新记录。 “无法为表格中的标识列插入显式值”

但是当我将EntityState更改为EntityState.Detached或EntityState.Unchanged时。 单独成功插入子实体(销售)(没有SalesStatus)

我一直很困惑。

我在下面找到了一些案例。但它对我的情况不起作用。 EF Code First Parent-Child insertions with identity columns

我使用dotnet framework 4.0 / entity framework 4.1

1 个答案:

答案 0 :(得分:0)

尝试更改主键名称(SalesID为SaleID)。可能是EF配置错误的外键,

public class Sale
{
    [Key]
    public int SaleID { get; set; } /* this is identity column*/

    //etc
}