2013-08-13 5 views
5

Moja tabela ma dwie kolumny: CreatedBy i CreateTime. W moim widoku nie mam tych pól. Teraz, gdy aktualizuję rekord przy użyciu metody edycji (post) programu ASP.NET MVC4, kolumny te mają wartość null. Ale chcę zachować wartości. Wiem, że w mojej metodzie edycji (post) mogę pobrać rekord z bazy danych i ustawić je ręcznie. Ale zastanawiam się, czy mogę poprosić Entity Framework, aby nie zmieniała wartości tych pól.Metoda edycji MVC4 zmienia wartości na null, jeśli pola correspndong nie istnieją w postaci

Odpowiedz

1

Trzeba wyborów tutaj:

1) Jak wspomniano @KennyZ, dodać do @Html.HiddenFor() gdzieś na widoku, w swojej formie:

@Html.HiddenFor(m => m.CreatedBy) 
@Html.HiddenFor(m => m.createTime) 

2) Można ręcznie aktualizować ten podmiot i pozostawić tylko te dwie właściwości:

var ent = dbctx.Entities.Find(model.ID); 

ent.Prop1 = model.Prop1; 
// ... also for other properties except those two property 

dbctx.SaveChanges(); 
3

Nie, nie możesz, jeśli chcesz zachować stare wartości, musisz najpierw uzyskać rekord, a następnie ręcznie przypisać wartości, które chcesz zaktualizować. Jedynym sposobem jest przejść przez nieruchomości przez podmiot własności i tagu te, które chcesz zmodyfikować, tak:

db.MyEntity.Attach(myEntity); 
db.Entry(myEntity).Property(e => e.MyProperty).IsModified = true; 
db.SaveChanges(); 

czy inaczej skończyć się konieczności wykonywania pracy ręcznej samodzielnie.

0

Pewnie, że możesz. Zakładam, że są już w twoim modelu, po prostu dodaj je do formularza za pomocą Html.HiddenFor(m => m.createdBy). Teraz są w formie, ale nie są wyświetlane i wciąż mają wartości w metodach Post.