문제

LINQ2SQL을 사용하여 행 데이터를 업데이트하지만 값을 변경하면 전에이 문제를 연구하고 다음과 같은 이유를 찾았습니다.

  • 엔티티가 변경되지 않았으므로 업데이트가 발생하지 않았습니다
  • 엔티티가 기본 키가 없지만 업데이트가 발생하지 않습니다

이들 중 어느 것도 내 상황에서의 경우입니다.

내 수업과 테이블에 PK가 있습니다. 데이터 컨텍스트의 getChangEset ()은 적어도 1 업데이트가 있음을 나타냅니다.

내가 본 유일한 문제는 데이터 컨텍스트 로그에서 업데이트 문이 생성되지 않는다는 것입니다.

누구든지 문제가 무엇인지 아이디어가 있습니까?

여기에 코드 샘플이 있습니다.

using(context db=new context())
{
 db.Log=new System.IO.StreamWriter(sample){AutFlush=true};
 MyObject obj=db.MyTable.SingleOrDefault(row=>Email==email);
 if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   System.Data.Linq.ChangeSet set=db.GetChangeSet();
   db.SubmitChanges();
 }
}
.

도움이 되었습니까?

해결책 2

나는 그 문제를 발견했다.관심있는 사람을 위해.

i DataContext CLA에 유효성 검사 논리를 추가했습니다. 예를 들어, 내 테이블 이름이 "제품"이면 "UpdateProduct"부분 메소드에 대한 유효성 검사를 추가했습니다.

그러나 LINQ가 데이터베이스 변경을 계속하기 위해 LINQ를 SQL로 전환하도록 소홀히했습니다.그래서 그것은 코드를 계속하지 않았다.

이를 필요로하는 모든 사람을 위해, 적절하게 적절하게 적절하게 "executeynamicUpdate"라고 할 때 "executeynamicupdate"라고 부를 필요가 있습니다.

업데이트 된 솔루션의 샘플 :

partial void UpdateObj(Obj instance)
{
  if(instance.Field==null)
  {
     thow new NotImplementedException();
  }
  //Added missing code continuation
  this.ExecuteDynamicUpdate(instance);
}
.

스코틀랜드 블로그가 나를 도왔습니다 ... http://weblogs.asp.net/scottgu/linq-to-sql-part-4-updating-our-database

다른 팁

이 작업을 시도 할 수 있습니다

if(obj!=null)
 {
   obj.FirstName=firstName;
   obj.LastName=lastName;
   db.MyTable.InsertOnSubmit(obj);
   db.SubmitChanges();

   System.Data.Linq.ChangeSet set = db.GetChangeSet();
 }
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top