Я работаю над чтением XML-файла, но в нем много блоков с другими блоками внутри.
Проблема в том, что в корневом классе есть первичный ключ с именем DocumentNumber, мне нужно это значениево всех других блоках, потому что при создании таблиц (каждый класс является таблицей на сервере sql) мне нужно будет соединить все эти таблицы, и мне нужен этот ключ DocumentNumber.Таким образом, что я покажу ниже, если я сгенерирую таблицы с помощью Update-Database, например таблицы EDI_IFTMBC300_DOC_DT, для него будет создан DocumentNumber в качестве внешнего ключа, но класс внутри EDI_IFTMBC300_DOC_DT, то есть EDI_IFTMBC300_DOC_DT_LOC, не будетиметь этот DocumentNumber из корневого класса.
Как я могу создать эти классы таким образом, чтобы все классы имели этот первичный ключ DocumentNumber в корневом классе в качестве внешнего ключа, а также при чтении сериализации XML-файла,он уже установит все внешние ключи со значением, равным DocumentNumber в корневом классе.
[XmlRoot("Document")]
[Table("EDI_IFTMBC300_DOC")]
public class EDI_IFTMBC300_DOC
{
public EDI_IFTMBC300_DOC()
{
this.EDI_IFTMBC300_DOC_DTP = new List<Model.EDI_IFTMBC300_DOC_DTP>();
this.EDI_IFTMBC300_DOC_REF = new List<Model.EDI_IFTMBC300_DOC_REF>();
this.EDI_IFTMBC300_DOC_DT = new List<Model.EDI_IFTMBC300_DOC_DT>();
this.EDI_IFTMBC300_DOC_NAME = new List<Model.EDI_IFTMBC300_DOC_NAME>();
this.EDI_IFTMBC300_DOC_ID = new Model.EDI_IFTMBC300_DOC_ID();
this.EDI_IFTMBC300_DOC_ED = new List<Model.EDI_IFTMBC300_DOC_ED>();
this.EDI_IFTMBC300_DOC_LOC = new List<Model.EDI_IFTMBC300_DOC_LOC>();
}
public string SenderID { get; set; }
public string ReceiverID { get; set; }
public string DocumentDate { get; set; }
public string DocumentTime { get; set; }
[Key]
public string DocumentNumber { get; set; }
public string FunctionCode { get; set; }
public string TransportService { get; set; }
[XmlElementAttribute("DateTimePeriod")]
public virtual List<EDI_IFTMBC300_DOC_DTP> EDI_IFTMBC300_DOC_DTP { get; set; }
[XmlElementAttribute("Reference")]
public virtual List<EDI_IFTMBC300_DOC_REF> EDI_IFTMBC300_DOC_REF { get; set; }
[XmlElementAttribute("DetailsTransport")]
public virtual List<EDI_IFTMBC300_DOC_DT> EDI_IFTMBC300_DOC_DT { get; set; }
[XmlElementAttribute("Name")]
public virtual List<EDI_IFTMBC300_DOC_NAME> EDI_IFTMBC300_DOC_NAME { get; set; }
[XmlElementAttribute("ItemDetails")]
public virtual EDI_IFTMBC300_DOC_ID EDI_IFTMBC300_DOC_ID { get; set; }
[XmlElementAttribute("EquipmentDetail")]
public virtual List<EDI_IFTMBC300_DOC_ED> EDI_IFTMBC300_DOC_ED { get; set; }
[XmlElementAttribute("Location")]
public virtual List<EDI_IFTMBC300_DOC_LOC> EDI_IFTMBC300_DOC_LOC { get; set; }
}
public class EDI_IFTMBC300_DOC_LOC
{
[Key]
public string LocationQualifier { get; set; }
public string LocationValue { get; set; }
}
public class EDI_IFTMBC300_DOC_DTP
{
[Key]
public string Qualifier { get; set; }
public string Value { get; set; }
}
public class EDI_IFTMBC300_DOC_REF
{
[Key]
public string ReferenceQualifier { get; set; }
public string ReferenceValue { get; set; }
}
public class EDI_IFTMBC300_DOC_DT
{
public EDI_IFTMBC300_DOC_DT()
{
this.EDI_IFTMBC300_DOC_DT_LOC = new List<Model.EDI_IFTMBC300_DOC_DT_LOC>();
}
[Key]
[Column(Order = 0)]
public string StageCode { get; set; }
[Key]
[Column(Order = 1)]
public string VoyageNumber { get; set; }
[Key]
[Column(Order = 2)]
public string VesselName { get; set; }
[XmlElementAttribute("Location")]
public virtual List<EDI_IFTMBC300_DOC_DT_LOC> EDI_IFTMBC300_DOC_DT_LOC { get; set; }
}
public class EDI_IFTMBC300_DOC_DT_LOC
{
public EDI_IFTMBC300_DOC_DT_LOC()
{
this.EDI_IFTMBC300_DOC_DT_LOC_DTP = new List<Model.EDI_IFTMBC300_DOC_DT_LOC_DTP>();
}
[Key]
[Column(Order = 0)]
public string LocationQualifier { get; set; }
public string LocationValue { get; set; }
[XmlElementAttribute("DateTimePeriod")]
public virtual List<EDI_IFTMBC300_DOC_DT_LOC_DTP> EDI_IFTMBC300_DOC_DT_LOC_DTP { get; set; }
}
public class EDI_IFTMBC300_DOC_DT_LOC_DTP
{
[Key]
public string Qualifier { get; set; }
public string Value { get; set; }
}
public class EDI_IFTMBC300_DOC_NAME
{
[Key]
[Column(Order = 0)]
public string NameCode { get; set; }
[Key]
[Column(Order = 1)]
public string NameValue { get; set; }
}
public class EDI_IFTMBC300_DOC_ID
{
public EDI_IFTMBC300_DOC_ID()
{
this.EDI_IFTMBC300_DOC_DETAILS = new List<Model.EDI_IFTMBC300_DOC_DETAILS>();
}
[Key]
public string DocNumber { get; set; }
[XmlElementAttribute("ItemNumber")]
public virtual List<EDI_IFTMBC300_DOC_DETAILS> EDI_IFTMBC300_DOC_DETAILS { get; set; }
}
public class EDI_IFTMBC300_DOC_DETAILS
{
public EDI_IFTMBC300_DOC_DETAILS()
{
this.EDI_IFTMBC300_DOC_ID_DG = new List<Model.EDI_IFTMBC300_DOC_ID_DG>();
}
[Key]
[XmlAttribute("item")]
public string item { get; set; }
public int NumberPackages { get; set; }
public string TypeOfPackages { get; set; }
[ForeignKey("EDI_IFTMBC300_DOC")]
public string DocumentNumber { get; set; }
public EDI_IFTMBC300_DOC EDI_IFTMBC300_DOC { get; set; }
[XmlElementAttribute("DangerousGoods")]
public virtual List<EDI_IFTMBC300_DOC_ID_DG> EDI_IFTMBC300_DOC_ID_DG { get; set; }
}
public class EDI_IFTMBC300_DOC_ID_DG
{
[Key]
public string HazardCode { get; set; }
public string UndgNumber { get; set; }
}
public class EDI_IFTMBC300_DOC_ED
{
[Key]
public string Container { get; set; }
}