Как я могу получить значения объекта до его редактирования в базе данных?

Я кодирую Web API 2 webservice, и хотел бы получить некоторую помощь в получении значений объекта до его редактирования в DbSet,

Я провел некоторые исследования и считаю, что мне нужно использовать ObjectStateEntry объект. Тем не менее, я не уверен, как получить значения объекта с помощью ObjectStateEntry объект.

Вот простая функция put с некоторым кодом, который, я думаю, должен работать:

// PUT: api/Templates1/5
[ResponseType(typeof(void))]
public async Task<IHttpActionResult> PutTemplate(int id, Template template)
{
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    if (id != template.id)
    {
        return BadRequest();
    }

    ObjectStateEntry myObjectState = db.ObjectStateManager.GetObjectStateEntry(template);
    var originalValues = myObjectState.OriginalValues;

    db.Entry(template).State = EntityState.Modified;

    try
    {
        await db.SaveChangesAsync();
    }
    catch (DbUpdateConcurrencyException)
    {
        if (!TemplateExists(id))
        {
            return NotFound();
        }
        else
        {
            throw;
        }
    }

    return StatusCode(HttpStatusCode.NoContent);
}

Я получаю следующую ошибку:

DataService.Context.DataServiceContext не содержит определения для ObjectStateManager и не найден метод расширения ObjectStateManager, принимающий первый аргумент типа "DataService.Context.DataServiceContext" (если вы пропустили директиву using или ссылку на сборку).?)

Может кто-нибудь, пожалуйста, помогите мне получить значения объекта, прежде чем объект редактируется в базе данных?

1 ответ

ObjectStateManager является свойством из ObjectContext

using (var ctx = new TestContext())
{
    var first = ctx.Entity_Basics.First();
    var objectStateEntry = ((IObjectContextAdapter)ctx).ObjectContext.ObjectStateManager.GetObjectStateEntry(first);


    //ctx.Entity_Basics.Delete();
    //ctx.Entity_Basics.Update(x => new Entity_Basic() { ColumnInt = 2 });
}

Если вам нужна дополнительная помощь, вы можете проверить исходный код моей библиотеки http://entityframework-plus.net/

Другие вопросы по тегам