Запутался в подключении / отключении объектов в EF - PullRequest
1 голос
/ 24 августа 2009

Используя ASP.NET MVC и Entity Framework, я сталкиваюсь с некоторыми ошибками присоединения / отсоединения, когда мне нужно записать изменения в базу данных.

Сначала вот как я получаю записи из своего хранилища:

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

Обратите внимание, что это не отключается, и имеет MergeOption = AppendOnly.

В другом месте я вызываю метод в своем репо, чтобы прикрепить клиента к приложению:

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;
    }
}

Это, конечно, дает мне ошибку, что объекты (приложение и клиент) уже присоединены к контексту объекта.

Так что мне нужно отсоединить мои объекты в моем хранилище. Это также более правильно, так как мне не нужно разбрасывать «информацию, связанную с запросами», в Интернете. Но как я могу это сделать? Если я отсоединяю сущность в своем методе GetPublishedApplication, мой график связанных данных теряется, и я не могу себе этого позволить. Мне нужен этот график в другом месте на моем сайте. Также нельзя использовать параметр слияния NoTracking.

Итак, какие у меня есть варианты?

Заранее спасибо!

1 Ответ

0 голосов
/ 15 сентября 2009

Я думаю, нет простого решения для присоединения сущностей.
Может быть, этот пост поможет вам: Повторное присоединение графов объектов с помощью Entity Framework на codeproject.com

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...