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

时间:2013-05-09 19:59:13

标签: entity-framework ef-code-first cascade

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

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

在我将WillCascadeOnDelete设置为true并删除我的数据库以便实体框架可以再次创建它之后,它创建了没有表格的数据库。但是如果我把它放在false上,它就没有任何问题。

以下是我用来表示真实的代码:

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

        base.OnModelCreating(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;
    }
}

此外,如果我在创建数据库后将其快速删除,则会出错:数据库XXX无法访问。

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

0 个答案:

没有答案