如何使用实体框架以一对多关系更新所有表?

时间:2019-01-07 16:44:09

标签: entity-framework c#-4.0

我正在尝试更新一个使用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();
    }
 }

我该如何解决这个问题?

0 个答案:

没有答案