テーブルのレコードを更新して挿入する次の関数があります
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 であり、識別指定がオンになっています)。
しかし、この最初の挿入では、DASInput テーブルの主キーの変更された値は返されません。
したがって、後続の呼び出しごとに、新しいレコードがデータベースに挿入されます。レコードが挿入されたときに、主キー (DB によって生成された自己) をクライアントに返す必要があります。