Oracle
 sql >> база данни >  >> RDS >> Oracle

Oracle ODP.Net и EF CodeFirst - Грешка при запазване на промените

Идеята с Attach() методът е, че имате обект, за който е известно, че е в БД, но не се проследява от този контекст, нали? Въпросът ми към вас е знаете ли със сигурност, че тази роля е тук:

Role r = new Role { ID = 1, Name = "Members" };

нещо, което вече съществува? Ако не стане, не мисля, че това, което искате да направите, е да използвате

ctx.Roles.Attach(r);

по-скоро ще пишете:

ctx.Roles.Add(r);

и тогава бихте могли да се обърнете и да напишете

User u = new User {
    Login = login,
    Password = password,
    Status = 1,
};

ctx.Users.Add(u);
u.Roles.Add(r);
ctx.SaveChanges();

Проблемът, който има първият ви пример е, че тази нова роля е наистина нова за БД, така че прикачването й не е това, което бихте искали да правите, по-скоро бихте искали да я добавите.

И единственото извикване на ctx.SaveChanges() би трябвало да работи добре тук.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ПРОВЕРИТЕ ограничение за датата на раждане?

  2. Транспониране на избраните резултати с Oracle

  3. Функция LTRIM() в Oracle

  4. 4 начина за вмъкване на няколко реда в Oracle

  5. Начало на Oracle само за четене