Entity framework 将WillCascadeOnDelete设置为true后,不会创建任何表
我们正在ASP MVC4中创建一个项目,并首先使用代码。这意味着我们的数据库是在运行代码后自动创建的。但我注意到数据库中的可选关系在默认情况下没有启用“删除时级联” 所以在谷歌搜索之后,我发现你必须在你的上下文中添加它,但这给了我错误 在我将WillCascadeOnDelete设置为true并删除我的数据库以便实体框架可以再次创建它之后,它将创建中没有表的数据库。但如果我将其设置为false,则它可以正常工作。 下面是我用来将其设置为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
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创建了你的数据库,而是纠正我的方法。如果你已经解决了你的问题,那么就用解决方案来回答你的问题;不要将其编辑到问题中。请不要在标题中添加“已解决”。将解决方案作为答案发布,然后接受它。这标志着这个问题已经“解决”。天哪,对不起,我是这个网站的新手,再次感谢你纠正我的错误。顺便说一句,我以为我找到了答案,但我没有,所以我仍然接受任何可能的解决方案!