2010-03-15 2 views
1

을 SQL로 LINQ와 레코드 ID를 삽입 조회하는? 사용자가 방금 삽입 한 기사의 Id을 제공합니까, 아니면 다른 사용자가이 사용자 다음에 몇 초의 기사를 업데이트하면 동시성이 발생합니까?새로 다음 사용

답변

4

귀하의 dataContext 인스턴스 (db)는 삽입시 데이터베이스에 의해 생성 된 ID 값을 캡처합니다. 그 시점 이후에 다른 사용자가 값을 수정하면, 보이지 않을뿐만 아니라, DataContext 인스턴스는 요청되었을 때 지금은 부실 값을 제공합니다! DataContext가 데이터 수정을 위해 객체 추적을 수행해야하는 방법에 대해 생각한다면 이는 의미가 있습니다.

Order o1 = new Order() {Date = DateTime.Now, Quantity = 3}; 
Order o2 = new Order() {Date = DateTime.Now, Quantity = 4}; 

Customer c1 = new Customer() {Name = "Bob"}; 
c1.Orders.Add(o1); 
c1.Orders.Add(o2); 

db.InsertOnSubmit(c1); 
db.SubmitChanges(); 

고객을 모두 주문이 삽입됩니다 : 당신은 부모 레코드를 추가 한 다음 "안전"(원자) 방식으로 자식 레코드를 추가하려고 시도하는 경우

, 대신 이렇게 데이터베이스에 모두 또는 전혀 없음 (없는 경우, 이유를 설명하는 예외가 발생 함).

Id :를 사용하는 대신 Customer.Orders라는 관계 속성을 사용합니다. 이것은 데이터베이스가 생성하는 ID를 모르기 때문입니다. DataContext도 알지 못합니다. 그러나 Customer.Orders가 자동 생성 된 코드를 검토하면 해당 ID가 관리된다는 것을 알 수 있습니다.

+0

남자 답장을 해 주셔서 감사합니다. 대개 내가 제안한 방식으로 삽입합니다.하지만 여기에는 동적 시스템이있어 플러그인이 생기므로 플러그인이 Cpanel에서 동적으로 플러그인된다는 생각이들 때입니다. 사용자 삽입 레코드 삽입 된 ID를 세션에 저장하고 플러그인에 사용하여 해당 DBS에 데이터를 삽입합니다. 더 좋은 방법이 있기를 바랍니다. – DevMania

관련 문제