我使用此步骤在我的MVC项目中生成CodeFirst类:
1)使用成员资格支持运行我的应用程序并调用MVC Action,使用成员资格创建成员资格默认表(Membership,User,UserInRoles,...)
2)将新的.edmx文件添加到我的项目中并在向导中选择“从数据库生成”
3)在Visual Studio中的.edmx文件中编辑数据库(添加新表)
4)在.edmx中使用“从模型生成数据库”创建新数据库
5)使用实体框架Power Tools Beta 3与“逆向工程师代码优先”
6)删除现有数据库并调用使用我的上下文的MVC操作
这种情况有更简单的方法吗?
我收到此错误:
在表'UsersInRoles'上引入FOREIGN KEY约束'FK_dbo.UsersInRoles_dbo.Users_Users_UserId'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束。 无法创建约束。查看以前的错误。
请指导我关于错误以及任何简单快速的方法。
感谢。
答案 0 :(得分:0)
看起来您可能需要禁用“级联删除”。
点击此链接EF Fluent API
查看此信息启用级联删除
您可以使用WillCascadeOnDelete方法在关系上配置级联删除。如果依赖实体上的外键不可为空,则Code First会在关系上设置级联删除。如果依赖实体上的外键可以为空,则Code First不会在关系上设置级联删除,并且当删除主体时,外键将设置为null。
您可以使用以下命令删除这些级联删除约定:
modelBuilder.Conventions.Remove() modelBuilder.Conventions.Remove()
以下代码配置所需的关系,然后禁用级联删除。
modelBuilder.Entity<Course>()
.HasRequired(t => t.Department)
.WithMany(t => t.Courses)
.HasForeignKey(d => d.DepartmentID)
.WillCascadeOnDelete(false);
所有这些都应该在您的EF上下文文件中。
注意:您可能会想到禁用它的弊端!
祝你好运!