Pregunta

¿Es posible en EF-Código de Primera actualización sin consultar toda la fila en dB mediante el uso de objetos de código auxiliar, ...

por ejemplo.

public class Dinner 
{     
    public int DinnerID { get; set; }     
    public string Title { get; set; }     
    public DateTime EventDate { get; set; }     
    public string Address { get; set; }     
    public string Country { get; set; }     
    public string HostedBy { get; set; }       
}



Dinner dinner = dinner.DinnerID = 1;     
dinner.HostedBy = "NameChanged" 
nerdDinners.SaveChanges();

tendrá el código anterior crear una instrucción de actualización que hará que las siguientes columnas NULL para la fila de DinnerID 1?

Título, EVENTDATE, dirección, país

¿Hay una manera o método como "PropertyModified" = true, entonces el resto hacerlos = false, por lo que HostedBy es el único que se actualizará?

¿Fue útil?

Solución

pensar que están en busca de applyCurrentValues ??

public void UpdateDinner(Dinner existingDinner)
{
    var stub = new Dinner { DinnerId = existingDinner.DinnerId };
    ctx.Dinners.Attach(stub);
    ctx.ApplyCurrentValues(existingDinner);
    ctx.SaveChanges();
}

applyCurrentValues ?? copia el escalar valores del objeto existente para el objeto en el gráfico (en el caso anterior - la entidad stub).

En la página Observaciones sección en MSDN:

Cualquier valores que difieren de los valores originales del objeto están marcados como modificado.

Es eso lo que buscas?

Otros consejos

Para construir sobre la respuesta de Pablo, el siguiente trabajo cuando se utiliza EF modelo o primera base de datos:

context.ObjectStateManager.GetObjectStateEntry(dinner).SetModifiedProperty("HostedBy");

Sólo como referencia a mi pregunta original, si se encuentra la respuesta aquí:

actualiza una sola propiedad de un registro en el Código Marco de la entidad Primera

También contiene la manera de desactivar temporalmente la validación -. Muy útil especialmente si se ha utilizado herramientas de EF de energía para realizar ingeniería inversa a su base de datos de código primeras clases

Probar tal vez, que es específico de Código EF En primer lugar, que parece hacerlo de manera diferente que acaba de EF.

var dinner = context.Dinners.Find(1);

context.Entry(dinner).Property(d => d.HostedBy).IsModified = true;

context.SaveChanges();

Desde ADO.NET equipo Blog

"Marcación de una propiedad como fuerzas modificados ni una actualización para el pase a la base de datos de la propiedad cuando se llama SaveChanges incluso si el valor actual de la propiedad es igual a su valor original."

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top