一个7重嵌套表EF添加语句,注意子表赋值过程中只需写子表主键赋值,不需要写子表外键=父表主键。EF创建时会自动将子表外键设为与父表主键相等

时间:2023-03-09 04:27:47
一个7重嵌套表EF添加语句,注意子表赋值过程中只需写子表主键赋值,不需要写子表外键=父表主键。EF创建时会自动将子表外键设为与父表主键相等

AIRPORT_HELIPORT tt = new AIRPORT_HELIPORT()
            {
                AIRPORT_HELIPORT_UUID = Guid.NewGuid().ToString(),
                UNIT = new List<UNIT>()
                {
                    new UNIT()
                    {  
                        UNIT_UUID =Guid.NewGuid().ToString(),
                        SERVICE=new List<SERVICE>()
                        {                           
                            new SERVICE()
                            {
                                SERVICE_UUID=Guid.NewGuid().ToString(),
                                AIRPORT_GROUND_SERVICE=    new AIRPORT_GROUND_SERVICE()
                                {
                                    SERVICE_UUID=Guid.NewGuid().ToString(),
                                    AIRPORT_SUPPLIES_SERVICE=new AIRPORT_SUPPLIES_SERVICE()
                                    {
                                        AIRPORT_SUPPLIES_SERVICE_TS=new List<AIRPORT_SUPPLIES_SERVICE_TS>()
                                        {
                                            new AIRPORT_SUPPLIES_SERVICE_TS()
                                            {
                                                TIME_SLICE_ID=Guid.NewGuid().ToString(),
                                                INTERPRETATION="BASELINE",
                                                SEQUENCE_NUMBER=1,
                                                CORRECTION_NUMBER=1,
                                                SERVICE_UUID=Guid.NewGuid().ToString(),
                                                OIL=new List<OIL>()
                                                {
                                                    new OIL()
                                                    {
                                                        OIL_ID=Guid.NewGuid().ToString()
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };
            AirportHeliportManager.Add(tt);

TAXIWAY_TS twts = new TAXIWAY_TS()

{

TIME_SLICE_ID = Guid.NewGuid().ToString(),

INTERPRETATION = "BASELINE",

SEQUENCE_NUMBER = 1,

CORRECTION_NUMBER = 1,

AIRPORT_HELIPORT_UUID = "1234567890",

DESIGNATOR="T",

TYPE = "TWY",

MANOEUVRING_AREA_AVAILABILITY = new List<MANOEUVRING_AREA_AVAILABILITY>()

{

new MANOEUVRING_AREA_AVAILABILITY()

{

PROPERTIES_WITH_SCHEDULE=new PROPERTIES_WITH_SCHEDULE()

{

PROPERTIES_WITH_SCHEDULE_ID=Guid.NewGuid().ToString()

},

MANOEUVRING_AREA_USAGE=new List<MANOEUVRING_AREA_USAGE>()

{

new MANOEUVRING_AREA_USAGE()

{

USAGE_CONDITION_ID=Guid.NewGuid().ToString(),

USAGE2CONTACT=new List<USAGE2CONTACT>()

{

new USAGE2CONTACT()

{

AIRPORT_USAGE2CONTACT_ID=Guid.NewGuid().ToString()

}

}

}

}

}

}

};

TAXIWAY_TSManager tsman= ManagerFactory.Instance.TAXIWAY_TSManager;

tsman.Add(twts);

   NAVAID tt = new NAVAID()

{

NAVAID_UUID="987654321",

TERMINAL_SEGMENT_POINT = new List<TERMINAL_SEGMENT_POINT>()

{

new TERMINAL_SEGMENT_POINT()

{

NAVAID_UUID="987654321",

SEGMENT_POINT_ID=Guid.NewGuid().ToString(),

REPORTING_ATC="YES",

FLY_OVER="YES",

WAYPOINT="YES",

APPROACH_LEG_TS_STARPOINTP  =    new List<APPROACH_LEG_TS>()

{

new APPROACH_LEG_TS ()

{

TIME_SLICE_ID=Guid.NewGuid().ToString(),

INTERPRETATION="BASELINE",

SEQUENCE_NUMBER=1,

CORRECTION_NUMBER=1,

SEGMENT_LEG_UUID ="1",

ARRIVAL_FEEDER_LEG=new ARRIVAL_FEEDER_LEG() { SEGMENT_LEG_UUID="1"},

APP_SEGMENT_LEG_UUID="0",

INITIAL_LEG=new INITIAL_LEG() { SEGMENT_LEG_UUID="0"},

APP_SEGMENT_LEG_UUID2="2",

INTERMEDIATE_LEG=new INTERMEDIATE_LEG() { SEGMENT_LEG_UUID="2"},

APP_SEGMENT_LEG_UUID3="3",

FINAL_LEG=new FINAL_LEG() { SEGMENT_LEG_UUID="3"},

APP_SEGMENT_LEG_UUID4="4",

MISSED_APPROACH_LEG=new MISSED_APPROACH_LEG() { SEGMENT_LEG_UUID="4"},

FINAL_LEG_TS=new FINAL_LEG_TS()

{

TIME_SLICE_ID=Guid.NewGuid().ToString(),

INTERPRETATION="BASELINE",

SEQUENCE_NUMBER=1,

CORRECTION_NUMBER=1,

SEGMENT_LEG_UUID="7",

FINAL_LEG=new FINAL_LEG() { SEGMENT_LEG_UUID="7"}

}

}

}

}

}

};

NAVAIDManager nvman = ManagerFactory.Instance.NAVAIDManager;

nvman.Add(tt);

注意:如果A表继承于B表,则数据库中A表的主键会强制等于B表的主键,哪怕给A表设置了不同的主键,在Add()函数中也会将A表的主键强制设成B表的主键,而忽略赋予的值。如上面代码

中的FINAL_LEG_TS表继承于表APPROACH_LEG_TS,代码中虽然设置它的主键id值,但最终数据库还是将主键id设为与父表主键id相同。