代码优先POCO设计实体身份不起作用

时间:2012-12-13 20:09:11

标签: entity-framework linq-to-entities code-first poco

我正在使用POCO编写代码第一个Entity Framework应用程序。 这是简化版:

我定义了这个实体:

public class Respondent
{
    [Key]
    [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int RespondentId { get; set; }

    [Display(Name = "Your Name")]
    public string Name { get; set; }
}

此实体用于创建表格:

public class MyContext : DbContext
{
    public DbSet<Respondent> Respondents { get; set; }
}

我还定义了包含此实体的视图模型:

public class SurveyModel
{
    public Respondent Respondent { get; set; }
}

现在,在代码中:

var survey = new SurveyModel();
survey.Respondent = new Respondent();

当我需要写入DB时:

private MyContext db = new MyContext();

// HERE, after this line, SHOULD survey.Respondent.RespondentId be +1 ??
// Or only when I call db.SaveChanges() ??
db.Respondents.Add(survey.Respondent); 

此时survey.Respondent.RespondentId必须增加1,因为它使用相应的属性定义为IDENTITY。

但它不会发生。 请告诉我我做错了什么? 谢谢。

1 个答案:

答案 0 :(得分:2)

您需要调用db.SaveChanges()才能将其保存到数据库中。