Какой подход использовать на провайдере с структурой сущностей? - PullRequest
1 голос
/ 18 февраля 2011

У меня есть класс:

public class Tool
{
    [EdmScalarPropertyAttribute(EntityKeyProperty=true, IsNullable=false)]
    [DataMemberAttribute()]
    public Int64 ID { get; set; }

    [EdmScalarPropertyAttribute(EntityKeyProperty=false, IsNullable=false)]
    [DataMemberAttribute()]
    public string Name { get; set; }
}

У моего провайдера есть два метода:

public IEnumerable<Tool> GetFirst()
{
    using (var db = new Entitites())
    {
        return db.Tools.FirstOrDefault();
    }
}

public void Update(Tool o)
{
    using (var db = new Entities())
    {
        db.Tools.SaveChanges();
    }
}

Это не работает, потому что они находятся в разных контекстах, параметр метода Update даже не используется. Однако я могу получить объект из базы данных и изменить поля одно за другим с параметром объекта, а затем сохранить изменения.

Что мне делать?

  • Обновить объект и сохранить?
  • Сохранить только один контекст для поставщиков?
  • Другой подход?

1 Ответ

0 голосов
/ 18 февраля 2011

Я нашел attach метод из другой вопрос , очень похож

using (var db = new Entitites())
{
    // Attach the object on this context
    db.Attach(tool);

    // Change the state of the context to ensure update
    db.ObjectStateManager.GetObjectStateEntry(tool).SetModified();

    // ClientWins, flawless victory
    db.Refresh(RefreshMode.ClientWins, tool);
}
...