Entity Framework Codice primo aggiornamento da Stub Entity
-
09-10-2019 - |
Domanda
E 'possibile in EF Codice-primo a aggiornamento senza interrogare l'intera riga in dB utilizzando oggetti stub, ...
per es.
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();
sarà il codice sopra creare un'istruzione di aggiornamento che renderà i seguenti colonne NULL per la fila di DinnerID 1?
Titolo, EventDate, indirizzo, paese
C'è un modo o metodo come "PropertyModified" = true, poi il resto renderli = false, in modo che HostedBy è l'unico che verrà aggiornato?
Soluzione
I pensare si sono alla ricerca di href="http://msdn.microsoft.com/en-us/library/dd487246.aspx" applyCurrentValues ??
public void UpdateDinner(Dinner existingDinner)
{
var stub = new Dinner { DinnerId = existingDinner.DinnerId };
ctx.Dinners.Attach(stub);
ctx.ApplyCurrentValues(existingDinner);
ctx.SaveChanges();
}
applyCurrentValues ?? copia il scalare valori dall'oggetto esistente all'oggetto nel grafico (nel caso sopra - l'entità stub).
Dal Note su MSDN:
I valori che differiscono dai valori originali dell'oggetto sono contrassegnati come modificato.
E 'questo che la tua dopo?
Altri suggerimenti
Per costruire sulla risposta di Paolo, il seguente funziona quando si utilizza EF modello o database Primo:
context.ObjectStateManager.GetObjectStateEntry(dinner).SetModifiedProperty("HostedBy");
Solo per riferimento alla mia domanda iniziale, se trovato qui la risposta:
aggiornare una singola proprietà di un record in codice Entity Framework primo
Esso contiene inoltre come la convalida disattivare temporaneamente -. Molto utile soprattutto se si è utilizzato EF Power Tools per decodificare il codice DB prime classi
Penso che si sta cercando il attach () metodo.
Prova questo forse, è specifico per EF Codice Prima che sembra farlo in modo diverso che solo EF.
var dinner = context.Dinners.Find(1);
context.Entry(dinner).Property(d => d.HostedBy).IsModified = true;
context.SaveChanges();
"Marcatura una proprietà come le forze modificati un aggiornamento da inviare al database per la proprietà quando SaveChanges viene chiamato anche se il valore corrente della proprietà è la stessa come il suo valore originale."