EF相同实体之间的一对一和一对多
本文关键字:一对一 一对多 之间 实体 EF | 更新日期: 2023-09-27 18:16:59
我有以下问题:我需要创建实体,这些实体将同时与实体框架中的一对多和一对一关系连接。
我想创建的模型如下:我有MapObject实体和FloorMap实体。在FloorMap上有很多MapObject,但是FloorMap是另一个MapObject的一部分。我该如何实现它?
我想这样做:
public class FloorMap
{
public int FloorMapID { get; set; }
public int FloorNumber { get; set; }
public string FloorImage { get; set; }
public string FloorMapDescription { get; set; }
public virtual List<MapObject> MapObjects { get; set; }
public virtual MapObject MapObject { get; set; }
}
public partial class MapObject
{
[Key,ForeignKey ("FloorMap")]
public int FloorMapRefID { get; set; }
public virtual FloorMap FloorMap { get; set; }
}
不幸的是,这并不像我想要的那样工作。在EF中有没有办法实现这样的关系?
我真的不确定我明白你在问什么,但听起来你想要一个有一个父母和许多孩子的平面图。我不太确定为什么你想要MapObject与这个混合,但肯定。
public class FloorMap
{
public int FloorMapID { get; set; }
public int FloorNumber { get; set; }
public string FloorImage { get; set; }
public string FloorMapDescription { get; set; }
public virtual List<MapObject> MapObjects { get; set; }
public virtual MapObject MapObject { get; set; }
}
public partial class MapObject
{
[Key,ForeignKey ("FloorMap")]
public int FloorMapRefID { get; set; }
public virtual FloorMap FloorMap { get; set; }
public int OtherFloorMapRefID {get;set;}
public virtual FloorMap OtherFloorMap { get; set; }
}
modelBuilder.Entity<FloorMap>().HasMany(e => e.MapObjects).WithRequired(e=>e.OtherFloorMap).HasForeignKey(e=>e.OtherFloorMapRefID);
modelBuilder.Entity<FloorMap>().HasOptional(e => e.MapObject).WithRequired(e=>e.FloorMap);
这看起来像你要做的吗?