2012-05-14 47 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) - 由于从上下文跟踪实体,这将更新属性,而无需向数据库添加新的实体。 –