C# 不返回修改对象的自跟踪实体
我有以下功能来更新和插入表中的记录C# 不返回修改对象的自跟踪实体,c#,wcf,self-tracking-entities,C#,Wcf,Self Tracking Entities,我有以下功能来更新和插入表中的记录 public DASInput UpdateDASInputTable(DASInput fileSetData, Guid programID) { string connectionString = GetConnectionString(programID); BI_ProgramConfigurationEntities dataContext = new BI_ProgramConfigurationEntit
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自行生成)返回给客户端。将实体添加到linq控制的数据库中的语法不是更符合以下内容:
context.Table.AddObject(newStore);
//or
context.Table.Add(newStore);
context.SaveChanges();
我只是暂时回答这个问题,对LINQ没有太多的了解。AddObject方法显式插入到表中,并且不更新tablecontext。SaveChanges()将把添加的实体保存到数据库中。如果您正在查找更新(而不是添加新记录),则只需调用context.SaveChanges();而不是context.Table.Add(newStore)-由于实体是从上下文跟踪的,因此这将更新属性,而无需向数据库添加新实体。我还阅读了下面的文章,了解关于自跟踪实体的注意事项。但它没有详细阐述这个问题。