在多个到多个关系EF4中插入或更新的问题

时间:2011-07-08 16:21:02

标签: c# asp.net-mvc entity-framework many-to-many

假设有3个表:

Category
-------------
CategoryID    int
Title         text


Admin
------------
AdminID       int
FullName      text


Permission
------------
CategoryID    int
 AdminID      int
 AllowAccess  bit

当我尝试更新数据库更改时,我遇到以下异常:

Unable to insert or update an entity because the principal end of the 'KiaNetModel.FK_Permissions_Admins' relationship is deleted.

WHY吗

更新更改的功能:

public static void SetPermissions(int[] cats, int userId, Entities context)
        {
            var premissions = from p in context.AdminPremissions where p.AdminID == userId select p;
            // Clear all premissions...
            foreach (var p in premissions)
            {
                p.AllowAccess = false;
            }

            foreach (var c in cats)
            {
                var es = from e in context.AdminPremissions where e.CategoryID == c && e.AdminID == userId select e;
                // If any pre permission was found, set flag = true
                if (es.Count() > 0)
                    es.First().AllowAccess = true;

                // Otherwise add new one
                else
                    context.AdminPremissions.AddObject(new AdminPremission() { AdminID = userId, CategoryID = c, AllowAccess = true });
            }
        }

这是一个Web应用程序,当用户标记权限时,我只能确定设置了哪些权限,而不是所有权限。

如果您有任何其他想法,或者更好的方式,请告诉我。

2 个答案:

答案 0 :(得分:1)

我认为表Permission和Admin之间的关系已从Actual数据库或Entity Model中删除。在这种情况下,你必须再次建立这种关系。

答案 1 :(得分:-3)

生成“管理”表和“权限”删除并创建脚本(使用数据 - 如果你有数据)。

然后执行它,如果你有关系重新创建它, Ur Prb必须解决。