我曾嘗試通過EF5和MySQL進行示例。實體框架5代碼優先例外
[Table("agency")]
class Agency
{
[Key]
[Required]
public int agency_id { get; set; }
public string name { get; set; }
}
class MyContext : DbContext
{
public DbSet<Agency> Agency { get; set; }
}
class Sample
{
public static void Main()
{
using (var db = new MyContext())
{
var query = from x in db.Agency select x.agency_id;
var new_num = query.DefaultIfEmpty<int>().Max(p => p == null ? 0 : p);
new_num++;
Agency a = new Agency
{
agency_id = new_num,
name = "Test"
};
db.Agency.Add(a);
db.SaveChanges();
}
}
}
起初。它成功了。
但第二次,它在db.SaveChanges()中拋出異常。
{「key'PRIMARY'重複條目'0'}}
隨着拋出的異常,我追蹤變量。
agency_id當然有'1'。
出了什麼問題?
更新1
http://i46.tinypic.com/do7xj4.png
http://i46.tinypic.com/2rc0ci1.png
http://i49.tinypic.com/2enmhi8.png
更新2
!!!! ??????????? ????????????????
http://i48.tinypic.com/110euty.jpg
這不是問題。 new_num值正確增加。 – 2013-03-13 10:21:02
我認爲問題是在查詢最大標識符somwhere。第二次運行時,db.Agency是否爲空? – 2013-03-13 10:45:37
SaveChanges時,我猜agency_id爲0 .. – 2013-03-13 11:07:33