双方需要一对多关系实体框架

本文关键字:实体 框架 关系 一对多 方需 | 更新日期: 2023-09-27 18:06:16

如何使两个表之间的关系一对多,在两个方面都需要例如我有项目和图像表每个图像都有一个项目,每个项目至少有一个图像我做了这个每个图像都有project

public class ImageMap : EntityTypeConfiguration<Image>
{
    public ImageMap()
    {
        this.ToTable("ProjectImage");
        this.HasKey<int>(i => i.Id);
        this.Property(i => i.ImagePath).IsRequired().HasMaxLength(2000);
        this.HasRequired<Project>(i => i.Project).WithMany(p => p.Images)
            .HasForeignKey(i => i.ProjectId);
    }
}

如何使每个项目至少有一个或多个图像??(实体框架版本6)

双方需要一对多关系实体框架

您不能确保在一对多关系的"many"部分中存在"至少一个"条件。例如,如果没有检查约束,这不是你可以在数据库中管理的(你也可以在你的应用程序中做一个验证来管理)。

实现这一目标的一种方法是创建一对一关系和一对多关系,两者都指向同一个表/实体。

所以你的项目将有一个MandatoryImage属性,例如,和一个AlternativeImages(集合)属性。

我认为在调用上下文的SaveChanges方法之前,您应该在业务逻辑或数据访问层中控制。据我所知,没有办法配置使用Fluent API。所以你可以这样做:

if(project.Images.Count()>0)// Or project.Images.Any()
{
   context.SaveChanges();
}