Entity framework 将WillCascadeOnDelete设置为true后,不会创建任何表

Entity framework 将WillCascadeOnDelete设置为true后,不会创建任何表,entity-framework,ef-code-first,cascade,Entity Framework,Ef Code First,Cascade,我们正在ASP MVC4中创建一个项目,并首先使用代码。这意味着我们的数据库是在运行代码后自动创建的。但我注意到数据库中的可选关系在默认情况下没有启用“删除时级联” 所以在谷歌搜索之后,我发现你必须在你的上下文中添加它,但这给了我错误 在我将WillCascadeOnDelete设置为true并删除我的数据库以便实体框架可以再次创建它之后,它将创建中没有表的数据库。但如果我将其设置为false,则它可以正常工作。 下面是我用来将其设置为true的代码: protected override vo

我们正在ASP MVC4中创建一个项目,并首先使用代码。这意味着我们的数据库是在运行代码后自动创建的。但我注意到数据库中的可选关系在默认情况下没有启用“删除时级联”

所以在谷歌搜索之后,我发现你必须在你的上下文中添加它,但这给了我错误

在我将WillCascadeOnDelete设置为true并删除我的数据库以便实体框架可以再次创建它之后,它将创建中没有表的数据库。但如果我将其设置为false,则它可以正常工作。

下面是我用来将其设置为true的代码:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Location>()
            .HasOptional(r => r.PartOfLocations)
            .WithMany()
            .WillCascadeOnDelete();

        base.OnModelCreating(modelBuilder);
    }
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
modelBuilder.Entity()
.has可选(r=>r.PartOfLocations)
.有很多
.WillCascadeOnDelete();
基于模型创建(modelBuilder);
}
以下是我的位置模型:

public class Location
{
    [Key, DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
    public int LocationId { get; set; }

    [Display(Name = "Name"), Required]
    public String Name { get; set; }

    [Display(Name = "Description", ResourceType = typeof(ViewRes.ClassModelStrings))]
    public String Description { get; set; }

    public int LocationTypeId { get; set; }
    [ForeignKey("LocationTypeId")]
    public virtual LocationType LocationType { get; set; }



    public virtual ICollection<Location> PartOfLocations { get; set; }

    public override string ToString()
    {
        return this.Name;
    }
}
公共类位置
{
[键,DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int LocationId{get;set;}
[显示(Name=“Name”),必填]
公共字符串名称{get;set;}
[显示(Name=“Description”,ResourceType=typeof(ViewRes.ClassModelStrings))]
公共字符串说明{get;set;}
public int LocationTypeId{get;set;}
[外键(“LocationTypeId”)]
公共虚拟位置类型位置类型{get;set;}
位置{get;set;}的公共虚拟ICollection部分
公共重写字符串ToString()
{
返回此.Name;
}
}
此外,如果在创建数据库后将其删除为quick,则会出现一个错误:数据库XXX不可访问


它在数据库名称后添加了“(单用户)”,不知道这是否有帮助

只是一个旁注:您正在谈论实体框架。它与ASP.NETMVC无关(尽管知道这一点很有趣),这绝对不是关于ASP.NETMVC的。另外,不是ASP创建了你的数据库,而是纠正我的方法。如果你已经解决了你的问题,那么就用解决方案来回答你的问题;不要将其编辑到问题中。请不要在标题中添加“已解决”。将解决方案作为答案发布,然后接受它。这标志着这个问题已经“解决”。天哪,对不起,我是这个网站的新手,再次感谢你纠正我的错误。顺便说一句,我以为我找到了答案,但我没有,所以我仍然接受任何可能的解决方案!