次のコードがあります。
var roleEditionCNT = new Role { ApplicationName = "TTT", RoleName = "EDITION_CNT" };
var roleEditionKCD = new Role { ApplicationName = "TTT", RoleName = "EDITION_KCD" };
var roleEditionInterne = new Role { ApplicationName = "TTT", RoleName = "EDITION_INTERNE" };
var roleConsultationInterne = new Role { ApplicationName = "TTT", RoleName = "CONSULTATION_INTERNE" };
var roleConsultationExterne = new Role { ApplicationName = "TTT", RoleName = "CONSULTATION_EXTERNE" };
var roleAdministrator = new Role { ApplicationName = "TTT", RoleName = "ADMINISTRATOR" };
new List<Role>
{
roleEditionCNT,
roleEditionKCD,
roleEditionInterne,
roleConsultationInterne,
roleConsultationExterne,
roleAdministrator
}.ForEach(b => context.Roles.AddOrUpdate(m => m.RoleName, b));
それから私はすることができます:
var myUser = new User
{
Company = "DELTOY",
FirstName = "BRYAN",
LastName = "KENETH",
Roles = new List<Role> { roleEditionCNT }
};
ここで、次のようにロールを割り当てる方法を変更したいと思います。
var myUser = new User
{
Company = "DELTOY",
FirstName = "BRYAN",
LastName = "KENETH",
Roles = new List<Role> { new Role { ApplicationName = "TTT", RoleName = "EDITION_CNT" } }
};
このコードは正常にコンパイルされましたが、実行時にエラーが発生しました:
PRIMARY KEY 制約 'PK_Roles' に違反しています。オブジェクト 'dbo.Roles' に重複キーを挿入できません
上記のコードを変更するだけで、システムがテーブル Roles に新しいレコードを追加しようとしているように見えます。変数を使用せずに単にロールを割り当てるにはどうすればよいですか。rolename を文字列で指定することを好みます。
何か案が?