Rez*_*aei 6 c# entity-framework code-first
有两个实体,如贝娄:
public class Business
{
public int Id {get; set;}
public File Logo {get; set;}
public int? LogoId {get; set;}
public File Video {get; set;}
public int? Video {get; set;}
public ICollection<File> Images {get; set;}
}
public class File
{
// some file props, such as Id, Name, ...
}
Run Code Online (Sandbox Code Playgroud)
如何在业务删除时为文件配置级联删除?请考虑,我不需要任何导航从File到Business.
更新:
您可以在下面找到modelBuilder配置:
modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>();
modelBuilder.Entity<Entities.Business>()
.HasOptional(b => b.Logo)
.WithOptionalPrincipal()
.WillCascadeOnDelete();
modelBuilder.Entity<Entities.Business>()
.HasOptional(b => b.Video)
.WithOptionalPrincipal()
.WillCascadeOnDelete();
modelBuilder.Entity<Entities.Business>()
.HasMany(b => b.Images)
.WithOptional()
.WillCascadeOnDelete();
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误:
在表'Files'上引入FOREIGN KEY约束'FK_dbo.Files_dbo.Businesses_Business_Id1'可能会导致循环或多个级联路径.指定ON DELETE NO ACTION或ON UPDATE NO ACTION,或修改其他FOREIGN KEY约束.无法创建约束
如果你想使用单独的配置类,你可以尝试这样的事情:
public class BusinessConfiguration : EntityTypeConfiguration<Business>
{
public BusinessConfiguration()
{
HasMany(x => x.Images).WithOptional().WillCascadeOnDelete();
HasOptional(x => x.Logo).WithOptional().WillCascadeOnDelete();
HasOptional(x => x.Video).WithOptional().WillCascadeOnDelete();
}
}
Run Code Online (Sandbox Code Playgroud)
当你没有传递lambda .WithOptional()或.WithRequired()意味着另一边没有导航属性.
| 归档时间: |
|
| 查看次数: |
10664 次 |
| 最近记录: |