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)-由于实体是从上下文跟踪的,因此这将更新属性,而无需向数据库添加新实体。我还阅读了下面的文章,了解关于自跟踪实体的注意事项。但它没有详细阐述这个问题。