如何在两个表之间建立一对多的关系并且需要在两个方面 例如 我有项目和图像表 每个图像都有项目,每个项目至少有一个图像 我这样做 每个图像都有项目
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)
答案 0 :(得分:1)
我认为在您的上下文调用SaveChanges
方法之前,您应该在业务逻辑或数据访问层中控制这一点。据我所知,没有办法使用Fluent API配置它。所以你可以这样做:
if(project.Images.Count()>0)// Or project.Images.Any()
{
context.SaveChanges();
}
答案 1 :(得分:1)
您无法确保&#34;至少有一个&#34;条件在&#34;很多&#34;一对多关系的一部分。例如,这不是您可以在数据库中管理的,没有检查约束(您也可以在应用程序中进行验证以进行管理)。
实现这一目标的一种方法可能是创建一对一关系和一对多关系,两者都指向同一个表/实体。
因此,您的项目将拥有MandatoryImage
属性,以及AlternativeImages
(集合)属性。