Как обновить все таблицы в отношении один ко многим, используя Entity Framework? - PullRequest
0 голосов
/ 07 января 2019

Я пытаюсь обновить таблицу, которая вызывает другую таблицу, используя Entity Framework, она используется для чтения файла XML. Когда я добавляю информацию, она корректно добавляет информацию в таблицы, но когда я пытаюсь ее обновить, она не меняет информацию при запуске SaveChanges (), но не возвращает никакой ошибки.

Ниже представлен класс, созданный из EDI_X12_110_DOC, у меня есть список EDI_X12_110_DOC_NAME.

[Table("EDI_X12_110_DOC")]
public class EDI_X12_110_DOC
{
    [Key, Column(Order = 0)]
    public string SenderID { get; set; }
    public string ReceiverID { get; set; }
    public string DocumentDate { get; set; }
    public string DocumentTime { get; set; }
    [Key, Column(Order = 1)]
    public string DocumentNumber { get; set; }
    [Key, Column(Order = 2)]
    public string InvoiceNumber { get; set; }
    public string ShipMethodOfPayment { get; set; }

    [XmlElementAttribute("Name")]
    public List<EDI_X12_110_DOC_NAME> Name { get; set; }
}

[Table("EDI_X12_110_DOC_NAME")]
public class EDI_X12_110_DOC_NAME
{
    [Key, Column(Order = 0)]
    public string NameCode { get; set; }
    public string NameValue { get; set; }

    [Key, Column(Order = 1)]
    public EDI_X12_110_DOC EDI_X12_110_DOC { get; set; }
}

Ниже приведен код, в котором я добавляю или обновляю таблицы в базе данных, он работает для добавления, но если я что-то изменяю в файле XML и снова вызываю этот код, измененные поля не обновляются в таблице.

var xmlSerializer = new XmlSerializer(typeof(EDI_Sintel.Model.Docto_X12_110));
var theResponse =(EDI_Sintel.Model.Docto_X12_110)xmlSerializer.Deserialize(readFile);

foreach (var item in theResponse.Docto)
{  
    try
    {
        db.EDI_X12_110_DOC.AddOrUpdate(item);
        db.SaveChanges();
    }
    catch (Exception ex)
    {
        Console.WriteLine();
    }
 }

Как я мог решить эту проблему?

...