Wpis z mikrobloga

Mirki, mam taki kod:

`[HttpPost]

public ActionResult Register(Models.AccountModel account)

{

_if(ModelState.IsValid)

{

_if(!Tools.IsEmailExist(account.Email))

_{

__if(account.Password.Equals(account.RepeatPassword))

__{

___try

___{

____using (var db = new DatabaseEntities())

____{

_____var acc = db.Account.Create();

_______acc.Email = account.Email;

_______acc.Password = Tools.GetMD5hash(account.Password);

_______db.Account.Add(acc);

_______db.SaveChanges();

______}

_____}

_____catch(System.Data.Entity.Validation.DbEntityValidationException ex)

_____{ ...`

Po wykonaniu metody SaveChanges() otrzymuję wyjątek

base = {"OriginalValues cannot be used for entities in the Added state."}
Szukam na necie, ale podobnie jak ci tutaj:

http://stackoverflow.com/questions/22422057/originalvalues-cannot-be-used-for-entities-in-the-added-state

nie rozumiem o co chodzi.

Podobna odpowiedź jest tutaj:

http://forums.asp.net/t/1891681.aspx?EF+error+OriginalValues+cannot+be+used+for+entities+in+the+Added+state

ale to co jest niby rozwiązaniem to jakaś bzdura.

Ktoś się spotkał z takim błędem i wie o co chodzi?

#programowanie #csharp #mvc #entityframework

sorry za skopane formatowanie
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@h3lloya: jak wyglada tabela w bazie danych, jak wyglada klasa modelu Account ? Poza tym - korzystasz z md5 do hashowania hasel - rownie bezpieczne jak trzymanie hasel plaintextem. Czemu nie skorzystasz z gotowego api aspnet.identity (owin authentication)?
  • Odpowiedz
@h3lloya: Tłumacząc: nie można odwołać się do oryginalnych wartości encji, która jest w stanie "dodana".

Chodzi o to, że pobierając encję z bd poprzez EF, po zmianach wartości jej pól ale jeszcze przed zapisaniem do bazy możesz odwołać się do jej oryginalnych wartości właśnie poprzez OriginalValues. Natomiast nie mam pomysłu jak można odnieść to do kodu, który wkleiłeś wyżej.
  • Odpowiedz