结合EF Power Tools和.edmx生成CodeFirst Class和DB

时间:2013-04-24 03:39:43

标签: c# asp.net-mvc entity-framework code-first ef-power-tools

我使用此步骤在我的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约束。 无法创建约束。查看以前的错误。

请指导我关于错误以及任何简单快速的方法。

感谢。

1 个答案:

答案 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上下文文件中。

注意:您可能会想到禁用它的弊端!

祝你好运!