Операции с сущностями Linq To Sql - PullRequest
1 голос
/ 25 июня 2009

Я пытаюсь использовать:

// this is a BreakHistory class from the ADO.NET Data Entity Model _entities
_entities.AddToBreakHistory(this);
_entities.SaveChanges();

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

Я думаю, что мой код обновления:

_entities.ApplyPropertyChanges(this.EntityKey.EntitySetName, this);
_entities.SaveChanges();

и я думаю, что, вероятно, получу такую ​​же ошибку.

Должен ли я получить объект originalBreakHistory как таковой?

var originalBreakHistory = (from bh in _entities.BreakHistorySet where bh.BreakHistoryID = id select bh).FirstOrDefault();

- Обновлено в 16:40 того же дня Кажется, у меня может быть другая проблема, которая может быть связана. Я добавляю объект сущности Manager к текущей сущности BreakHistory, поскольку они связаны, и я получаю эту ошибку: «Невозможно определить отношения между двумя объектами, поскольку они присоединены к разным объектам ObjectContext».

Может ли эта ошибка быть из-за того, что я использую ту же модель сущности, но вызываю "new" для объектов сущности и загружаю их из БД ??

Вот мой код:

protected void lstBreaks_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    var bh = new BreakHistory().CurrentBreakRequest(int.Parse(e.CommandArgument.ToString())).CurrentManagerIs(GetManagerEntityByUserName());

    switch (e.CommandName)
    {
        case "Approve":
            bh.Approve();
            break;
        case "Deny":
            bh.Deny();
            break;
        case "Push":
            bh.Push();
            break;
    }

    bh.Save();

    LoadBreakList();
}

Код для примера на Утверждении - bh.Approve () выглядит так:

public BreakHistory Approve()
{
    this.DateApproved = DateTime.Now;
    this.ManagerApprove = CurrentManager;

    return this;
}

Менеджер может утверждать, отклонять или выдвигать запрос, поэтому менеджер связан с BreakHistory через ManagerID.

1 Ответ

0 голосов
/ 26 июня 2009

Вам не нужно использовать новый оператор, если вы извлекаете существующую запись. Это может быть тем, что тебя вешает.

Убедитесь, что вы используете один и тот же объект DataContext для всех ваших обновлений. Трудно переместить объекты из одного DataContext в другой по многим причинам.

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