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

时间:2016-09-08 13:15:11

标签: c# entity-framework

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

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)

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您无法确保&#34;至少有一个&#34;条件在&#34;很多&#34;一对多关系的一部分。例如,这不是您可以在数据库中管理的,没有检查约束(您也可以在应用程序中进行验证以进行管理)。

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

因此,您的项目将拥有MandatoryImage属性,以及AlternativeImages(集合)属性。