views:

14

answers:

0

I have this going me crazy,

I'm attaching a List with 1 Customer and 1 Address child record row. Everything seems OK while debugging. 1 customer Row and 1 Address Row should inserted. But instead I get 2 Customer Records and 1 Address Row.

I don't know why. When Attaching and looping inside the List only 1 record seen.

Any points?

[EDITED]

Code Attached:

public bool InsertUpdateCustomers(List<Customer> customerList, List<Customer> originalCustomers)
{
    using (DbContext db = new DbContext(DbContext.ConnectionString))
    {
        db.Log = Console.Out;
        List<Customer> customerCloned = new List<Customer>();
        customerList.ForEach(p => customerCloned.Add(p.CloneObjectGraph()));
        customerCloned.ForEach(p => p.Address =
            customerList.Where(pe => pe.Id == p.Id).Single().Address.CloneObjectGraph());

        customerCloned.ForEach(p =>
        {
            if (p.Id > 0)
            {
                db.Customer.Attach(p,
                                  originalCustomers.Single(
                                      x => x.Id == p.Id));
                db.Address.Attach(p.Address,
                                     originalCustomers.Single(
                                         x => p.AddressId== x.AddressId).
                                         Address);
            }
        });
        customerCloned.ForEach(p =>
        {
            if (p.Id == 0)
                db.Customer.InsertOnSubmit(p);
        });


        try
        {
            db.SubmitChanges(ConflictMode.ContinueOnConflict);
            return true;
        }
        catch (Exception ex)
        {
            return false;
        }
    }
}

I have checked the Log in the output and I see indeed 2 Inserts in the table. I don't see nothing about the Address, but inserts correctly.

It could be the foreign key problem i don't get it.