4

嗨,我正在使用 TPH 继承来建立类似的可配置项。我的 TPH 模型是:

public class baseConfigItem
    {
        public int ID {get; set;}
        public string ExternalText {get; set;}
        public string InternalText { get; set; }
        public bool Active { get; set; }
        public string Group { get; set; }
        public int SortOrder { get; set; }
        public statusDef status { get; set; }

        public virtual ICollection<Order> Orders{get;set;}
        public baseConfigItem()
        {

            this.Orders= new List<Order>();

        }
    }


public class DoorTypes:baseConfigItem{public DoorTypes():base(){}}
    public class WindowType : baseConfigItem { public WindowType():base(){}}
    public class WallType : baseConfigItem { public WallType():base(){}}
    public class RoofType : baseConfigItem { public RoofType():base(){}}
    public class RoofSize : baseConfigItem { public RoofSize():base(){}}
    public class DoorSize : baseConfigItem { public DoorSize():base(){}}
    public class GardenSize : baseConfigItem { public GardenSize():base(){}}

然后,我需要使用订单实体与子实体创建多对多和 1、一对多/多对一关系:

  • Order 有很多 WindowTypes
  • Order 有很多 WallType
  • 订单有很多屋顶类型
  • 订单有一个 RoofSize
  • 订单有一个 DoorSize
  • 订单有一个 GardenSize
public class Order
{
    public int ID {get; set;}
    public virtual ICollection<WindowType> WindowTypes {get; set;}
    public virtual ICollection<WallType> WallTypes {get; set;}
    public virtual ICollection<RoofType> RoofTypes {get; set;}
    public RoofSize RoofSize {get; set;}
    public DoorSize DoorSize {get; set;}
    public GardenSize GardenSize {get; set;}
}

但是,这不会为 RoofTypes、WallTypes 等生成多对多关系......我曾假设公共虚拟 ICollection Orders{get;set;} 将被继承。我如何能够建立与 order 的多对多和一对多关系的上述继承类?

4

1 回答 1

0

我试过你的模型。它对我没有任何改变(嗯,这并不完全正确,我将“StatusDef”更改为布尔,但这不会有任何区别。)和“噗” - 我所有的关系都在工作。您需要做的就是编译并运行该项目一次。这将使所有的表。然后去检查你的 SQL 服务器。

祝你好运。

于 2015-09-11T16:15:09.997 回答