Según el tipo de contexto y las entidades generadas, puede hacerlo de diferentes maneras. En el caso de objetos heredados de Entity o POCO, puede usar ObjectStateManager
en el caso de las entidades de seguimiento automático, puede usar Tracker desde la propia entidad.
proporcione más detalles sobre la forma en cómo usted generó contexto y cómo se realizan cambios
editada (2): se puede consultar ObjectStateManager
de entradas cambiadas simplemente como esta:
var changed = ctx.ObjectStateManager.GetObjectStateEntries().Where(e=>e.State != EntityState.Unchanged);
editada (1):
El siguiente ejemplo de MSDN demuestran cómo consultar para cambios:
int orderId = 43680;
using (AdventureWorksEntities context =
new AdventureWorksEntities())
{
var order = (from o in context.SalesOrderHeaders
where o.SalesOrderID == orderId
select o).First();
// Get ObjectStateEntry from EntityKey.
ObjectStateEntry stateEntry =
context.ObjectStateManager
.GetObjectStateEntry(((IEntityWithKey)order).EntityKey);
//Get the current value of SalesOrderHeader.PurchaseOrderNumber.
CurrentValueRecord rec1 = stateEntry.CurrentValues;
string oldPurchaseOrderNumber =
(string)rec1.GetValue(rec1.GetOrdinal("PurchaseOrderNumber"));
//Change the value.
order.PurchaseOrderNumber = "12345";
string newPurchaseOrderNumber =
(string)rec1.GetValue(rec1.GetOrdinal("PurchaseOrderNumber"));
// Get the modified properties.
IEnumerable<string> modifiedFields = stateEntry.GetModifiedProperties();
foreach (string s in modifiedFields)
Console.WriteLine("Modified field name: {0}\n Old Value: {1}\n New Value: {2}",
s, oldPurchaseOrderNumber, newPurchaseOrderNumber);
// Get the Entity that is associated with this ObjectStateEntry.
SalesOrderHeader associatedEnity = (SalesOrderHeader)stateEntry.Entity;
Console.WriteLine("Associated Enity's ID: {0}", associatedEnity.SalesOrderID);
}
generado el modelo desde db usando el asistente, código típico repo.entity.value = newvalue para hacer cambios – Kumar
ver respuesta extendida – vittore
interesante, ¿se escala a varias filas como si la "tabla" está vinculada a una cuadrícula y el el usuario hace cambios a una fila pero no sé cuál de antemano !! o necesito obtener & almacenar ObjectStateEntry para cada registro en la lista (que podría tener fácilmente> 10000 entradas) – Kumar