Как избежать раскручивания нескольких контекстов в рамках сущности - PullRequest
0 голосов
/ 28 января 2011

В Entity Framework при попытке запустить следующий код:

        using (MyEntities ctx = new myEntities())
        {
            Entity.Customers.Build buildId = new ctx.Build();
            buildId.CustomerService = customerService;
            buildId.datCreatedDate = DateTime.Now;
            buildId.strBuildSchema = schema;
            buildId.Status = "Success";
            ctx.AddToBuilds(buildId);
            ctx.SaveChanges();
        }

Приводит к ошибке «На объект сущности нельзя ссылаться несколькими экземплярами IEntityChangeTracker».

Насколько я могу судить, проблема в том, что создаваемый мной объект Build происходит из нового экземпляра контекста Entity Framework, который отличается от контекста, который выполняет оператор AddToBuilds ().

Однако я не могу понять, как обойти эту проблему.Кажется, я не могу создать новую сборку непосредственно из экземпляра объекта контекста Entity, т.е. ctx в приведенном выше коде?Есть ли способ сделать это, или я пропускаю другой очевидный обходной путь?

Приветствия, Мэтт

Ответы [ 2 ]

0 голосов
/ 28 января 2011

«customerService» (или, возможно, «схема») принадлежит другому EntityTracker.Самый простой способ избавиться от этого - добавить следующую строку кода в код , который загружает customerService (обратите внимание, что здесь делается предположение о имени класса customerService):

ctx.CustomerService.MergeOptions = MergeOptions.NoTracking;

Эта строка кода сообщает контексту: «Я не собираюсь вносить какие-либо изменения в объекты CustomerService, поэтому не беспокойтесь об их отслеживании».

0 голосов
/ 28 января 2011

Проблема в том, что вы связываете сущность, которая присоединена к одному контексту, не показанному в коде выше (customerService?), С другой сущностью, buildId, которая присоединена к ctx. Не делай этого. Используйте один контекст за раз.

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