Attach()
のアイデア 方法は、DBにあることがわかっているが、このコンテキストによって追跡されていないエンティティがあるということですよね?あなたへの私の質問は、この役割がここにあることを確かに知っていますか:
Role r = new Role { ID = 1, Name = "Members" };
すでに存在するものですか?そうでなければ、あなたがやりたいことは使用することではないと思います
ctx.Roles.Attach(r);
むしろそれはあなたが書くということです:
ctx.Roles.Add(r);
その後、振り返って書くことができます
User u = new User {
Login = login,
Password = password,
Status = 1,
};
ctx.Users.Add(u);
u.Roles.Add(r);
ctx.SaveChanges();
最初の例の問題は、この新しい役割がDBにとって本当に新しいため、それをアタッチすることはあなたがやりたいことではなく、追加したいということです。
そして、ctx.SaveChanges()
への1回の呼び出し ここでは問題なく動作するはずです。