EF One-To-One和One-To-Many在同一实体之间

时间:2015-10-10 15:48:31

标签: c# entity-framework orm

我有以下问题:我需要创建实体,这些实体将同时与实体框架中的一对多和一对一关系相关联。

我想要创建的模型如下:我有MapObject实体和FloorMap实体。 FloorMap上有许多MapObject,但FloorMap是另一个MapObject的一部分。我该如何实现它?

我想要做这样的somtheing:

Paymenttype

不幸的是,这并不是我想要的方式。有没有办法在EF中实现这种关系?

1 个答案:

答案 0 :(得分:0)

我不确定我明白你在问什么,但听起来你想要一张地图有一个父母和多个孩子。我不太清楚你为什么要把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);

这看起来像你想要做的吗?