views:

515

answers:

1

Hi,

Using ASP.NET MVC and Entity Framework, I encounter some attach/detach errors when I need ti write changes to the database.

First heres how I get the records from my repository:

public PublishedApplication GetPublishedApplication(int id)
{
    return dal.ExecuteFirstOrDefault(
        context.PublishedApplication.Include("Customers")
        .Where(w => w.Id == id));
}

Note that this is not being detached, and it has MergeOption = AppendOnly.

Another place, I call a method in my repo to attach a customer to the application:

public void AttachCustomer(int applicationId, int customerId)
{
    var app = new PublishedApplication{ Id = applicationId};
    var customer = new Customer { Id = customerId};

    try
    {
        context.AttachTo("PublishedApplication", app);
        context.AttachTo("Customer ", customer );

        app.Customers.Add(customer);

        context.SaveChanges();
    }
    catch
    {
        throw;
    }
}

This, of course, gives me an error that the objects (app and customer) are already attached to an object context.

So I need to detach my objects in my repository. This is also more correct as I don't need to throw "query related information" around the web. But how can I do this? If I detach the entity in my GetPublishedApplication method, my graph of related data is lost, and I can't afford that. I need that graph elsewhere on my site. Can't use merge option NoTracking either.

So what options do I have?

Thanks in advance!

A: 

I think, there isn't easy solution for reattaching entities.
May be this post will help you: Reattaching Entity Graphs with the Entity Framework on codeproject.com

Puzzled