gpt4 book ai didi

c# - AddOrUpdate 不修改 child

转载 作者:行者123 更新时间:2023-11-30 13:57:05 24 4
gpt4 key购买 nike

我在我的种子方法中使用 AddOrUpdate 来保持我的权限是最新的,但是,在以下代码更新现有角色(而不是创建它)的情况下,我创建的任何新权限都不会添加到角色。我做错了什么?

foreach (KeyValuePair<string, string[]> s in new Dictionary<string, string[]>{
{"Superuser", context.Permissions.Select<Permission, string>(p=>p.Name).ToArray()},

})
{
Role r = new Role();
r.Name = s.Key;
r.Permissions = new List<Permission>();
foreach (string p in s.Value)
r.Permissions.Add(context.Permissions.Where(per => per.Name == p).First());

context.Roles.AddOrUpdate(i => i.Name, r);
}

context.SaveChanges();

最佳答案

AddOrUpdate 仅添加或更新主要实体,而不是其关系。

所以你必须分两步来做:

  1. 创建角色,并对其AddOrUpdate。现在,您可以从添加或更新的 Role 中获取 RoleId(或任何 PK)。
  2. 创建 Permissions,并明确设置他们的 RoleId(或任何 FK 是什么)。然后 AddOrUpdate Permissions

关于c# - AddOrUpdate 不修改 child ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23067806/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com