将EF Power Tools和.edmx结合使用以生成CodeFirst类和数据库。

3
我使用以下步骤在我的MVC项目中生成CodeFirst类:
1)带有会员支持的运行应用程序并调用使用会员创建会员默认表(Membership,User,UserInRoles等)的MVC操作。
2)在我的项目中添加新的.edmx文件并在向导中选择“从数据库生成”。
3)在Visual Studio中编辑.edmx文件中的DB(添加新表)。
4)使用“Generate Database from model”在.edmx中创建新的数据库。
5)使用Entity Framework Power Tools Beta 3和“Reverse Engineer Code First”。
6)删除现有数据库并调用使用我的上下文的MVC操作。
这种情况是否有更简单的方法?
我收到以下错误消息:
引入FOREIGN KEY约束'FK_dbo.UsersInRoles_dbo.Users_Users_UserId'到表'UsersInRoles'可能会导致循环或多个级联路径。指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束即可。
请指导我关于出现的错误以及任何简单快速的方法。
谢谢。

有没有人有任何想法? - b24
1个回答

1

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

请查看此链接中的帖子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 上下文文件中。

注意:您可能会考虑禁用它的缺点!

祝好运!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接