Entity Framework を使用しており、MySQL データベースに接続しています。id 列は StoreGeneratedPattern Identity を使用するように設定され、データベースの列は自動インクリメントに設定されています。新しいオブジェクトを作成してデータベースに保存すると、アイテムがデータベースに正しく投稿されます。ただし、保存後、C# のオブジェクトの ID は、データベースによって割り当てられた値を反映するのではなく、0 のままです。
コードのセクションを以下に示します。
Group newGroup = new Group("MyGroupName", "Active");
dbContext.Groups.Add(newGroup);
dbContext.SaveChanges();
int testId = newGroup.id;
「newGroup」はデータベースに割り当てられたIDでデータベースに保存されますが、IDを読み取ると(testIdを読み取るときなど)、IDはまだ0です。
thisに基づいて、追加してみました
dbContext.Entry(newGroup).Reload();
SaveChanges() の後、私も( thisおよびthisに基づいて)追加を試みました
var objectContext = ((IObjectContextAdapter)dbContext).ObjectContext;
objectContext.Refresh(System.Data.Objects.RefreshMode.StoreWins, newGroup);
データベースからオブジェクト(したがってID)を更新しようとしてSaveChanges()の後、問題は残ります。データベースによって割り当てられた ID を取得するにはどうすればよいですか?
編集:グループのクラス定義を追加:
[Table("groups")]
public partial class Group
{
public Group()
{
this.user_groups = new HashSet<UserGroup>();
}
public long id { get; set; }
public string name { get; set; }
public string status { get; set; }
public System.DateTime created_at { get; set; }
public System.DateTime updated_at { get; set; }
public virtual ICollection<UserGroup> user_groups { get; set; }
}