3

我使用此步骤在我的 MVC 项目中生成 CodeFirst 类:

1) 使用会员支持运行我的应用程序并调用使用会员资格创建会员默认表的 MVC 操作 (Membership,User,UserInRoles,...)

2) 将新的 .edmx 文件添加到我的项目并在向导中选择“从数据库生成”

3) 在 Visual Studio 中编辑 .edmx 文件中的数据库(添加新表)

4)在 .edmx 中使用“从模型生成数据库”创建新数据库

5) 使用带有“逆向工程师代码优先”的 Entity Framework 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 约束。无法创建约束。请参阅以前的错误。

请指导我有关错误和任何简单快速的方法。

谢谢。

4

1 回答 1

1

看起来您可能需要禁用“级联删除”。

从此链接EF Fluent API检查此帖子

启用级联删除

您可以使用 WillCascadeOnDelete 方法对关系配置级联删除。如果依赖实体上的外键不可为空,则 Code First 会在关系上设置级联删除。如果依赖实体上的外键可以为空,Code First 不会在关系上设置级联删除,并且当主体被删除时,外键将设置为空。

您可以使用以下方法删除这些级联删除约定:

modelBuilder.Conventions.Remove() modelBuilder.Conventions.Remove()

以下代码将关系配置为必需,然后禁用级联删除。

modelBuilder.Entity<Course>()
    .HasRequired(t => t.Department)
    .WithMany(t => t.Courses)
    .HasForeignKey(d => d.DepartmentID)
    .WillCascadeOnDelete(false);

所有这些都应该在您的 EF 上下文文件中。

注意:您可能会想到禁用它的缺点!

祝你好运!

于 2013-10-02T12:05:33.863 回答