Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 一对多关系实体框架需要在两个方面_C#_Entity Framework - Fatal编程技术网

C# 一对多关系实体框架需要在两个方面

C# 一对多关系实体框架需要在两个方面,c#,entity-framework,C#,Entity Framework,如何使两个表之间的关系一对多,并要求在双方 例如 我有项目和图像表 每个图像都有一个项目,每个项目至少有一个图像 我做这个 每个图像都有一个项目 public class ImageMap : EntityTypeConfiguration<Image> { public ImageMap() { this.ToTable("ProjectImage"); this.HasKey<int>(i => i.Id);

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

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);
    }
}
公共类ImageMap:EntityTypeConfiguration
{
公共图像地图()
{
这个.ToTable(“projectmage”);
this.HasKey(i=>i.Id);
this.Property(i=>i.ImagePath).IsRequired().HasMaxLength(2000);
this.HasRequired(i=>i.Project).WithMany(p=>p.Images)
.HasForeignKey(i=>i.ProjectId);
}
}

如何使每个项目至少有一个或多个图像???(Entity Framwork version 6)

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

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

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

if(project.Images.Count()>0)// Or project.Images.Any()
{
   context.SaveChanges();
}
在一对多关系的“多”部分,您无法确保“至少一个”条件。例如,在没有检查约束的情况下,这不是您可以在db中管理的(您也可以在应用程序中执行验证来管理它)

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

例如,您的项目将具有
MandatoryImage
属性和
AlternativeImages
(集合)属性。

您无法确保一对多关系的“多”部分中存在“至少一个”条件。例如,在没有检查约束的情况下,这不是您可以在db中管理的(您也可以在应用程序中执行验证来管理它)

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


例如,您的项目将有一个
MandatoryImage
属性和一个
AlternativeImages
(collection)属性。

如果您不能在SQL中执行此操作,EF将没有配置选项。如果不能在SQL中执行此操作,EF将没有配置选项。