2012-08-29 191 views
0

爲什麼以下內容會爲策略&部分生成重複條目?任何指導將不勝感激。重複條目

public ActionResult Create(Program program) 
{ 
    db.Programs.Add(program); 

    Strategy strategy = db.Strategies.Where(s => s.Name == program.Strategy.Name).SingleOrDefault(); 
    Segment segment = db.Segments.Where(m => m.Name == program.Segment.Name).SingleOrDefault(); 

    // Make sure not to save duplicate entries of segment & strategy 
    if (strategy != null) 
    { 
     program.Strategy = strategy; 
     db.Entry(strategy).State = EntityState.Unchanged; 
    } 

    if (segment != null) 
    { 
     program.Segment = segment; 
     db.Entry(segment).State = EntityState.Unchanged; 
    } 

    db.SaveChanges(); 
} 

回答

0

嘗試

db.Entry(strategy).State = EntityState.Unchanged; 

db.Entry(segment).State = EntityState.Unchanged; 
+0

沒有工作,EF最終建立一個新的program.Strategy |反正段... – Rafet

+0

你如何初始化你的DbContext?嘗試用這種方法初始化它? – podiluska

+0

解決了,我將調用移動到db.Programs.Add(program);就在之前SaveChanges()。 – Rafet