【发布时间】:2020-07-11 20:26:08
【问题描述】:
好的,我想我可能在模型构建器中弄错了。我想要一个案例,它可以是一个案例,但在一个案例中,它们可以是许多关系。
modelBuilder.Entity<RelationShips>()
.HasOne<MISObject>(s => s.Case)
.WithMany(g => g.RelationShip)
.HasForeignKey(s => s.MisObjectId);
但是当我尝试用上面的方法保存时
DbUpdateException:更新条目时出错。看 有关详细信息的内部异常。 SqlException:INSERT 语句 与 FOREIGN KEY 约束冲突 “FK_RelationShips_MISobject_MisObjectId”。冲突发生在 数据库“MISSystem”,表“dbo.MISobject”,列“Id”。这 语句已终止。
我的 MISObject 有一个这样的关系集合
public class MISObject {
public int Id { get; set; }
public ICollection<RelationShips> RelationShip { get; set; }
}
public class RelationShips {
public int Id { get; set; }
public MISObject Case { get; set; }
}
上述是否不允许一对多关系,基本上一个案例可能有20个关系,但可能有很多案例。但是这 20 条关系应该只属于那种情况,如果那样的话。
我认为我需要使用 hasmany 但不确定在这种情况下如何使用。
编辑 2
我认为这可能是我需要的,但我不确定它是否合法。
modelBuilder.Entity<MISObject>()
.HasMany(c => c.RelationShip);
modelBuilder.Entity<RelationShips>()
.HasMany(c => c.PersonOfIntrests);
modelBuilder.Entity<POI>()
.HasMany(c => c.PersonOfIntrestsPhotos)
.WithOne(e => e.PersonOfIntrest);
【问题讨论】:
-
你能提供一些你保存数据到数据库(创建数据库实体)的sn-p吗?如果您想允许在没有 MISObject 的情况下创建 RelationShips(我猜是基于正在发生的错误),您应该将外键设为可为空
-
没有一个案例总是有关系,即使它只有一个关系,但一个关系可能有很多照片,例如联系电话
标签: c# entity-framework-core ef-core-3.0