1
我正在使用POCO編寫代碼優先實體框架應用程序。 這裏被簡化的版本:代碼優先POCO設計實體標識不起作用
我定義這個實體:
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。
但它沒有發生。 請指教我做錯了什麼? 謝謝。
是的,我知道。但我的問題不在於如何保存數據。 我需要知道的身份值將增加,只有當我調用db.SaveChanges()或之前,當我添加和實體的實體集合:db.Respondents.Add(survey.Respondent); ??? – monstro
只有在您調用SaveChanges後纔會增加。直到你稱它實際上不是數據庫的一部分。 – IronMan84
身份是由數據庫生成的,而不是EF生成的。你必須打電話給數據庫才能得到它。 – cadrell0