AddOrUpdate does not modify children

允我心安 提交于 2019-12-23 20:25:28

问题


I am using AddOrUpdate in my seed method to keep my permissions up to date, however, in the situation where the below code is updating the existing role (rather than creating it), any new Permissions I created are not being added to the role. What am I doing wrong?

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();

回答1:


AddOrUpdate only adds or updates the main entity, but not its relations.

So you have to do it in two steps:

  1. Create the Role, and AddOrUpdate it. Now you can get the RoleId (or whatever the PK is) form your added or updated Role.
  2. Create the Permissions, and set explicitly their RoleId (or whatever the FK is). Then AddOrUpdate the Permissions.


来源:https://stackoverflow.com/questions/23067806/addorupdate-does-not-modify-children

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!