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将没有配置选项。