2012-05-14 59 views
1

我有以下功能更新,並在表自我跟蹤實體沒有返回修改的對象

public DASInput UpdateDASInputTable(DASInput fileSetData, Guid programID) 
    { 
     string connectionString = GetConnectionString(programID); 
     BI_ProgramConfigurationEntities dataContext = new BI_ProgramConfigurationEntities(connectionString); 

     dataContext.DASInputs.ApplyChanges(fileSetData); 
     dataContext.SaveChanges(System.Data.Objects.SaveOptions.DetectChangesBeforeSave); 
     fileSetData = dataContext.DASInputs.FirstOrDefault(); 

     return fileSetData; 
    } 

插入一條記錄,當我做第一個呼叫類型DASInput的一個新的對象,然後它被正確地插入數據庫。 (DASInput表的主鍵爲int,其身份指定爲on)。

但是,第一次插入不會返回DASInput表的主鍵的修改值。

因此,在隨後的每一次調用中,都會將新記錄插入到數據庫中。我希望在插入記錄時將主鍵(由DB生成的自我)返回給客戶端。

+0

我也閱讀了下面的文章,關於自我跟蹤實體的考慮。 http://msdn.microsoft.com/en-us/library/ff407090.aspx但它沒有詳細說明這個問題。 – Sagar

回答

0

是不是更多的線沿線的添加一個實體到LINQ控制數據庫的語法:

context.Table.AddObject(newStore); 
//or 
context.Table.Add(newStore); 

context.SaveChanges(); 

我試探性地回答這個問題,不要正對LINQ巨大的知識淵博。

+0

AddObject方法顯式插入表中,不更新表 – Sagar

+0

context.SaveChanges()會將添加的實體保存到數據庫中。如果它正在查找更新(而不是添加新記錄),那麼只需調用context.SaveChanges();而不是context.Table.Add(newStore) - 由於從上下文跟蹤實體,這將更新屬性,而無需向數據庫添加新的實體。 –