Entity Framework: создайте сущность, присоедините дочерние сущности, сделайте некоторые вещи, затем сохраните сущности ... как? - PullRequest
0 голосов
/ 16 сентября 2010

У меня есть функция, для которой я хочу вернуть новую сущность с уже прикрепленными дочерними сущностями. То, что я не хочу делать, это сначала создать их в базе данных. Я просто хочу создать новый экземпляр сущности, создать несколько новых дочерних сущностей и добавить их в родительскую сущность перед возвратом родительской сущности в функцию.

Я начал с этого кода;

    public BusinessEntities.Event CreateEventWithDefaultActions(EventType eventType)
    {
        Facades.Event eventFacade = new Facades.Event();
        IList<BusinessEntities.DefaultAction> defaultActions;

        // new event
        BusinessEntities.Event skeletonEvent = new BusinessEntities.Event();
        skeletonEvent.EventType = eventType;

        // load the default actions
        defaultActions = eventFacade.LoadDefaultActionTypes(eventType);

        // create a new action and attach to the event
        foreach (BusinessEntities.DefaultAction defaultAction in defaultActions)
        {
            BusinessEntities.Action action = new BusinessEntities.Action();

            if(!defaultAction.ActionTypeReference.IsLoaded)
                defaultAction.ActionTypeReference.Load();

            action.ActionType = defaultAction.ActionType;                
            skeletonEvent.Actions.Attach(action);  // exception thrown
        }

        return skeletonEvent;
    }

По сути, я создаю новую сущность Event, которая может иметь связанные сущности Action - затем пытаюсь загрузить некоторые действия в зависимости от их типа и присоединить сущности Action к праву Event. Когда строка кода skeletonEvent.Actions.Attach (action); выполняется следующее исключение;

Присоединение не является допустимой операцией, когда исходный объект, связанный с этим связанным концом, находится в добавленном, удаленном или отсоединенном состоянии. Объекты, загруженные с использованием опции слияния NoTracking, всегда отсоединяются.

Куда я иду не так?

1 Ответ

1 голос
/ 16 сентября 2010

Возможно, вам следует попробовать использовать метод Add вместо Attach.Присоединение следует использовать, когда обе сущности отслеживаются контекстом объекта.Возможно, вам придется добавить объект Event в ObjectContext, используя метод AddObject (или сгенерированный AddToEvent).

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